Skip to content

Instantly share code, notes, and snippets.

@daiplusplus
Created September 16, 2023 09:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daiplusplus/497d0d8c1841bacdb578b0193af509d2 to your computer and use it in GitHub Desktop.
Save daiplusplus/497d0d8c1841bacdb578b0193af509d2 to your computer and use it in GitHub Desktop.
# Main
L0000 push rdi
L0001 push rsi
L0002 push rbp
L0003 push rbx
L0004 sub rsp, 0x58
L0008 vzeroupper
L000b xor eax, eax
L000d mov [rsp+0x50], rax
L0012 mov [rsp+0x48], rax
L0017 call UserQuery.CreateSampleData()
L001c mov [rsp+0x30], rax
L0021 mov rcx, 0x7ffe4a5824e8
L002b call 0x00007ffea9bd09c0
L0030 mov rdi, rax
L0033 xor ecx, ecx
L0035 mov [rdi+8], rcx
L0039 mov byte ptr [rdi+0x18], 0
L003d mov [rdi+0x10], rcx
L0041 mov [rsp+0x20], rdi
L0046 cmp byte ptr [rdi+0x18], 0
L004a jne L017f
L0050 lea rcx, [rsp+0x50]
L0055 mov rax, 0x7fff5a0061f0
L005f call rax
L0061 mov rcx, [rsp+0x50]
L0066 mov rdi, [rsp+0x20]
L006b mov [rdi+0x10], rcx
L006f mov byte ptr [rdi+0x18], 1
L0073 cmp dword ptr [0x7ffea9f12e74], 0
L007a jne L0189
L0080 mov rsi, [rsp+0x30]
L0085 mov rdi, [rsp+0x20]
L008a mov [rsp+0x38], rdi
L008f mov rcx, rsi
L0092 call UserQuery.Flatten(Char[,])
L0097 mov [rsp+0x28], rax
L009c mov rcx, rdi
L009f call qword ptr [0x7ffe4a591318]
L00a5 mov rbp, [rdi+8]
L00a9 cmp byte ptr [rdi+0x18], 0
L00ad je L0175
L00b3 lea rcx, [rsp+0x48]
L00b8 mov rax, 0x7fff5a0061f0
L00c2 call rax
L00c4 mov rcx, [rsp+0x48]
L00c9 mov rdi, [rsp+0x38]
L00ce sub rcx, [rdi+0x10]
L00d2 add rbp, rcx
L00d5 cmp dword ptr [0x7ffea9f12e74], 0
L00dc jne L0198
L00e2 mov rbx, [rsp+0x28]
L00e7 vxorps xmm0, xmm0, xmm0
L00eb vcvtsi2sd xmm0, xmm0, rbp
L00f0 vcvttsd2si rcx, xmm0
L00f5 vxorps xmm0, xmm0, xmm0
L00f9 vcvtsi2sd xmm0, xmm0, rcx
L00fe vdivsd xmm0, xmm0, [UserQuery.Main()]
L0106 vucomisd xmm0, [UserQuery.Main()]
L010e ja L01a7
L0114 vmovsd xmm1, [UserQuery.Main()]
L011c vucomisd xmm1, xmm0
L0120 ja L01ba
L0126 vmovsd [rsp+0x40], xmm0
L012c mov rcx, 0x7ffe4a0c77b8
L0136 call 0x00007ffea9bd09c0
L013b vmovsd xmm0, [rsp+0x40]
L0141 vmovsd [rax+8], xmm0
L0146 mov rdx, rax
L0149 mov rcx, 0x1d6d9012578
L0153 mov rcx, [rcx]
L0156 call qword ptr [0x7ffe4a7f1a08]
L015c call qword ptr [0x7ffe4a7f18b8]
L0162 mov rcx, rbx
L0165 call qword ptr [0x7ffe4a7f19f0]
L016b nop
L016c add rsp, 0x58
L0170 pop rbx
L0171 pop rbp
L0172 pop rsi
L0173 pop rdi
L0174 ret
L0175 mov rbx, [rsp+0x28]
L017a jmp L00e7
L017f mov rsi, [rsp+0x30]
L0184 jmp L0085
L0189 call 0x00007ffea9bcd900
L018e mov rsi, [rsp+0x30]
L0193 jmp L0085
L0198 call 0x00007ffea9bcd900
L019d mov rbx, [rsp+0x28]
L01a2 jmp L00e7
L01a7 vmovsd xmm0, [UserQuery.Main()]
L01af vmovsd [rsp+0x40], xmm0
L01b5 jmp L012c
L01ba vmovsd xmm0, [UserQuery.Main()]
L01c2 vmovsd [rsp+0x40], xmm0
L01c8 jmp L012c
# Flatten
L0000 push r15
L0002 push r14
L0004 push rdi
L0005 push rsi
L0006 push rbp
L0007 push rbx
L0008 sub rsp, 0x28
L000c mov rsi, rcx
L000f test rsi, rsi
L0012 je L00d3
L0018 mov edi, [rsi+0x10]
L001b mov ebx, [rsi+0x14]
L001e mov rcx, 0x7ffe4a24a4c0
L0028 call 0x00007ffea9bd09c0
L002d mov rbp, rax
L0030 mov edx, edi
L0032 imul edx, ebx
L0035 mov rcx, rbp
L0038 mov r8d, 0x7fffffff
L003e call qword ptr [0x7ffe4a2530f0]
L0044 xor r14d, r14d
L0047 test edi, edi
L0049 jle short L00b9
L004b xor r15d, r15d
L004e test ebx, ebx
L0050 jle short L00b1
L0052 mov ecx, r14d
L0055 sub ecx, [rsi+0x18]
L0058 cmp ecx, [rsi+0x10]
L005b jae short L00ce
L005d mov edx, [rsi+0x14]
L0060 imul ecx, edx
L0063 mov r8d, r15d
L0066 sub r8d, [rsi+0x1c]
L006a cmp r8d, edx
L006d jae short L00ce
L006f add ecx, r8d
L0072 movzx edx, word ptr [rsi+rcx*2+0x20]
L0077 mov ecx, [rbp+0x18]
L007a mov r8d, ecx
L007d mov rax, [rbp+8]
L0081 mov r9d, [rax+8]
L0085 cmp r9d, r8d
L0088 jbe short L009a
L008a mov r8d, r8d
L008d mov [rax+r8*2+0x10], dx
L0093 inc ecx
L0095 mov [rbp+0x18], ecx
L0098 jmp short L00a9
L009a mov rcx, rbp
L009d mov r8d, 1
L00a3 call qword ptr [0x7ffe4a253258]
L00a9 inc r15d
L00ac cmp r15d, ebx
L00af jl short L0052
L00b1 inc r14d
L00b4 cmp r14d, edi
L00b7 jl short L004b
L00b9 mov rcx, rbp
L00bc add rsp, 0x28
L00c0 pop rbx
L00c1 pop rbp
L00c2 pop rsi
L00c3 pop rdi
L00c4 pop r14
L00c6 pop r15
L00c8 jmp qword ptr [0x7ffe4a24a528]
L00ce call 0x00007ffea9cf9b30
L00d3 mov rcx, 0x7ffe4a1fe830
L00dd call 0x00007ffea9bd09c0
L00e2 mov rsi, rax
L00e5 mov ecx, 0x65
L00ea mov rdx, 0x7ffe4aacc060
L00f4 call 0x00007ffea9b52360
L00f9 mov rdx, rax
L00fc mov rcx, rsi
L00ff call qword ptr [0x7ffe4a211348]
L0105 mov rcx, rsi
L0108 call 0x00007ffea9b28570
L010d int3
# CreateSampleData
L0000 push rdi
L0001 push rsi
L0002 push rbp
L0003 push rbx
L0004 sub rsp, 0x48
L0008 vzeroupper
L000b vxorps xmm4, xmm4, xmm4
L000f vmovdqa [rsp+0x20], xmm4
L0015 vmovdqa [rsp+0x30], xmm4
L001b xor eax, eax
L001d mov [rsp+0x40], rax
L0022 mov rcx, 0x7ffe4a7c1ca0
L002c call 0x00007ffea9bd09c0
L0031 mov rsi, rax
L0034 mov rcx, 0x7ffe4a8d8650
L003e call 0x00007ffea9bd09c0
L0043 mov rdi, rax
L0046 vxorps xmm0, xmm0, xmm0
L004a vmovdqu [rsp+0x20], xmm0
L0050 lea rcx, [rsp+0x20]
L0055 mov edx, 0x34d0058
L005a call qword ptr [0x7ffe4a8e7000]
L0060 lea rbx, [rdi+8]
L0064 mov rdx, [rsp+0x20]
L0069 mov rcx, rbx
L006c call 0x00007ffea9bd0440
L0071 mov edx, [rsp+0x28]
L0075 mov [rbx+8], edx
L0078 mov edx, [rsp+0x2c]
L007c mov [rbx+0xc], edx
L007f mov rdx, rdi
L0082 lea rcx, [rsi+8]
L0086 call 0x00007ffe49f10010
L008b mov dword ptr [rsp+0x40], 0x100
L0093 mov dword ptr [rsp+0x44], 0x100
L009b lea r8, [rsp+0x40]
L00a0 mov rcx, 0x7ffe4a7c1e08
L00aa mov edx, 2
L00af call 0x00007ffea9bb6180
L00b4 mov rdi, rax
L00b7 xor ebx, ebx
L00b9 xor ebp, ebp
L00bb mov rcx, [rsi+8]
L00bf mov edx, 0x4c
L00c4 mov rax, [rcx]
L00c7 mov rax, [rax+0x40]
L00cb call qword ptr [rax+0x30]
L00ce add eax, 0x32
L00d1 mov edx, ebx
L00d3 sub edx, [rdi+0x18]
L00d6 cmp edx, [rdi+0x10]
L00d9 jae short L0115
L00db mov ecx, [rdi+0x14]
L00de imul edx, ecx
L00e1 mov r8d, ebp
L00e4 sub r8d, [rdi+0x1c]
L00e8 cmp r8d, ecx
L00eb jae short L0115
L00ed add edx, r8d
L00f0 mov [rdi+rdx*2+0x20], ax
L00f5 inc ebp
L00f7 cmp ebp, 0x100
L00fd jl short L00bb
L00ff inc ebx
L0101 cmp ebx, 0x100
L0107 jl short L00b9
L0109 mov rax, rdi
L010c add rsp, 0x48
L0110 pop rbx
L0111 pop rbp
L0112 pop rsi
L0113 pop rdi
L0114 ret
L0115 call 0x00007ffea9cf9b30
L011a int3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment