Function at 0x101251c0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xa0
push ebx
push ebp
mov ebp, dword [esp + 0xe0]
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
inc ebp
and ebp, 0xfffffffe
mov dword [esp + 0x90], 0xffffffff
push esi
mov esi, dword [esp + 0xe8]
mov eax, ebp
sar eax, 1
inc esi
mov dword [esp + 0x40], eax
and esi, 0xfffffffe
mov eax, esi
mov dword [esp + 0x3c], ebp
sar eax, 1
mov dword [esp + 0x54], eax
lea eax, [ebp*2]
add eax, ebp
mov dword [esp + 0x78], esi
add eax, eax
mov dword [esp + 0x98], 0xffffffff
mov dword [esp + 0x80], eax
cdq
shld edx, eax, 1
push edi
add eax, eax
test edx, edx
jne 0x1012523f
push eax
call ebx
add esp, 4
mov dword [esp + 0x48], eax
mov edi, eax
jmp 0x10125245
xor edi, edi
mov dword [esp + 0x48], edi
mov eax, esi
imul eax, ebp
cdq
mov esi, eax
shld edx, esi, 1
add esi, esi
test edx, edx
jne 0x1012526a
push esi
call ebx
push esi
mov dword [esp + 0x18], eax
call ebx
add esp, 8
mov dword [esp + 0x5c], eax
jmp 0x1012527a
mov dword [esp + 0x10], 0
mov dword [esp + 0x5c], 0
lea eax, [ebp*2]
mov dword [esp + 0x90], eax
cdq
shld edx, eax, 1
add eax, eax
test edx, edx
jne 0x1012529f
push eax
call ebx
add esp, 4
mov dword [esp + 0x50], eax
jmp 0x101252a7
mov dword [esp + 0x50], 0
mov eax, dword [esp + 0x58]
imul eax, dword [esp + 0x44]
lea eax, [eax + eax*2]
cdq
mov esi, eax
shld edx, esi, 1
add esi, esi
test edx, edx
jne 0x101252d1
push esi
call ebx
push esi
mov dword [esp + 0x28], eax
call ebx
add esp, 8
mov esi, eax
jmp 0x101252e3
mov eax, dword [esp + 0x10]
xor esi, esi
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], esi
lea eax, [eax + eax*2]
mov dword [esp + 0x94], eax
cdq
shld edx, eax, 1
add eax, eax
test edx, edx
jne 0x1012530c
push eax
call ebx
add esp, 4
mov dword [esp + 0x64], eax
jmp 0x10125314
mov dword [esp + 0x64], 0
movd xmm0, dword [esp + 0x7c]
mov eax, dword [esp + 0x5c]
movd xmm1, ebp
cvtdq2pd xmm1, xmm1
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], esi
cvtdq2pd xmm0, xmm0
mulsd xmm1, qword [0x101e6328]
mulsd xmm1, xmm0
xorps xmm0, xmm0
movlpd qword [esp + 0x88], xmm0
movsd xmm0, qword [0x101a65e0]
comisd xmm1, xmm0
jb 0x1012537b
subsd xmm1, xmm0
comisd xmm0, xmm1
jbe 0x1012537b
mov esi, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
add esi, 0
adc ebx, 0x80000000
jmp 0x10125389
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0x88]
movaps xmm0, xmm1
call fcn.10104e00
add eax, esi
mov dword [esp + 0x88], eax
adc edx, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0xac], edx
test ebx, ebx
je 0x10125c1c
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x10125c1c
mov edx, dword [esp + 0x5c]
test edx, edx
je 0x10125c1c
cmp dword [esp + 0x60], 0
je 0x10125c1c
cmp dword [esp + 0x50], 0
je 0x10125c1c
cmp dword [esp + 0x64], 0
je 0x10125c1c
test edi, edi
je 0x10125c1c
mov esi, dword [esp + 0xec]
test esi, esi
mov esi, dword [esp + 0xc8]
mov dword [esp + 0x38], 0
jle 0x101257ab
lea eax, [esi + 2]
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x68], eax
add ebx, edi
mov eax, 0xe
mov dword [esp + 0x34], ebx
sub eax, esi
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
lea eax, [eax + eax*2]
add eax, eax
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0xc4]
add eax, eax
mov dword [esp + 0x74], eax
mov eax, ebp
neg eax
shl eax, 2
mov dword [esp + 0x70], eax
mov eax, edi
sub eax, edx
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x60]
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
sub eax, edx
mov edx, dword [esp + 0xb8]
sub ecx, edx
mov dword [esp + 0x58], eax
sub dword [esp + 0xbc], edx
mov dword [esp + 0xb4], ecx
nop dword [eax]
mov eax, dword [esp + 0xbc]
add ecx, edx
push edi
push dword [esp + 0xec]
add eax, edx
push esi
push dword [esp + 0xcc]
push eax
push edx
push ecx
call fcn.10125c80
mov eax, dword [esp + 0x108]
add esp, 0x1c
dec eax
cmp dword [esp + 0x38], eax
je 0x10125508
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0xc4]
mov eax, dword [esp + 0xbc]
push ebx
push dword [esp + 0xec]
add eax, ecx
push esi
push dword [esp + 0xcc]
add eax, edx
push eax
lea eax, [ecx + edx]
push eax
mov eax, dword [esp + 0xcc]
add eax, ecx
add eax, edx
push eax
call fcn.10125c80
add esp, 0x1c
jmp 0x10125519
push dword [esp + 0x84]
push edi
push ebx
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov esi, dword [esp + 0x58]
add esi, dword [esp + 0x18]
push ebp
push esi
push edi
call fcn.101263d0
lea eax, [ebp*2]
push ebp
add eax, esi
push eax
push ebx
call fcn.101263d0
mov ecx, dword [esp + 0x80]
add esp, 0x18
mov eax, dword [esp + 0x4c]
cmp ecx, 0xe
mov esi, dword [esp + 0xc8]
mov edx, 2
cmovle eax, edx
add eax, esi
mov dword [esp + 0x80], eax
test ebp, ebp
jle 0x1012563d
lea esi, [ebp*2]
mov dword [esp + 0x28], ebp
lea eax, [edi + ebp*4]
add esi, edi
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], esi
nop word [eax + eax]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x80]
push edi
movzx eax, word [eax + ebp]
push eax
call fcn.1013fb00
movzx ecx, word [esi]
mov ebx, eax
push edi
push ecx
call fcn.1013fb00
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x1c]
push edi
movzx ecx, word [eax]
push edi
push ecx
call fcn.1013fb00
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1013fc90
mov esi, dword [esp + 0x2c]
lea ebp, [ebp + 2]
add dword [esp + 0x24], 2
add esi, 2
add esp, 8
mov word [ebp - 2], ax
sub dword [esp + 0x28], 1
mov dword [esp + 0x24], esi
jne 0x10125590
mov ebp, dword [esp + 0x40]
mov edi, dword [esp + 0x48]
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0xc8]
mov ecx, dword [esp + 0x68]
mov eax, dword [esp + 0x4c]
cmp ecx, 0xe
mov ecx, 2
cmovle eax, ecx
xor ecx, ecx
add eax, esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], eax
test ebp, ebp
jle 0x1012572c
mov edx, dword [esp + 0x18]
mov edi, ebx
sub edi, dword [esp + 0x18]
mov dword [esp + 0x54], edi
lea esi, [edx + ebp*2]
lea edx, [ebx + ebp*4]
mov dword [esp + 0x28], esi
mov dword [esp + 0x1c], edx
nop dword [eax]
push eax
movzx eax, word [ebx + ecx*2]
push eax
call fcn.1013fb00
push dword [esp + 0x38]
movzx ecx, word [edi + esi]
mov ebx, eax
push ecx
call fcn.1013fb00
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x30]
push eax
push eax
mov eax, dword [esp + 0x24]
movzx ecx, word [eax]
push ecx
call fcn.1013fb00
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1013fc90
mov esi, dword [esp + 0x30]
add esp, 8
mov ecx, dword [esp + 0x24]
add dword [esp + 0x1c], 2
inc ecx
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x54]
mov word [esi], ax
add esi, 2
mov eax, dword [esp + 0x30]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], esi
cmp ecx, ebp
jl 0x10125680
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0xc8]
push esi
push dword [esp + 0x48]
push dword [esp + 0x34]
push ebx
push edi
call fcn.101264a0
push dword [esp + 0x80]
mov eax, dword [esp + 0x44]
push eax
add eax, dword [esp + 0x58]
push eax
call sub.VCRUNTIME140.dll_memcpy
mov edx, dword [esp + 0xd8]
lea eax, [ebp*4]
add dword [esp + 0x38], eax
add esp, 0x20
mov eax, dword [esp + 0x70]
add dword [esp + 0x14], eax
mov eax, dword [esp + 0x6c]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
add edx, dword [esp + 0x74]
add eax, 2
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0xb8], edx
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0xec]
jl 0x10125490
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
jmp 0x101257b6
mov eax, 0xe
sub eax, esi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x24], 0
nop
mov ebp, dword [esp + 0x40]
xor eax, eax
xorps xmm0, xmm0
mov dword [esp + 0x38], ecx
mov dword [esp + 0x6c], ecx
movlpd qword [esp + 0x74], xmm0
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x58], eax
cmp dword [esp + 0x7c], eax
jle 0x10125b70
mov edx, dword [esp + 0x44]
add esi, 2
mov ecx, dword [esp + 0x84]
mov ebx, dword [esp + 0x4c]
add ecx, edi
mov dword [esp + 0x80], esi
lea esi, [ebp*4]
mov dword [esp + 0x54], esi
lea esi, [edx + edx*2]
mov edx, dword [esp + 0x2c]
add esi, esi
mov dword [esp + 0xa8], esi
mov esi, dword [esp + 0x60]
sub esi, dword [esp + 0x20]
mov dword [esp + 0xa4], esi
mov esi, dword [esp + 0x5c]
sub esi, dword [esp + 0x10]
mov dword [esp + 0xa0], esi
mov esi, dword [esp + 0x78]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x74]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x7c]
add esi, 0xfffffffe
cmp eax, esi
jge 0x10125869
mov eax, dword [esp + 0x94]
jmp 0x1012586f
mov ebx, dword [esp + 0x4c]
xor eax, eax
push dword [esp + 0xc8]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x4c]
push ecx
push edi
mov edi, dword [esp + 0x44]
lea esi, [esi + eax*2]
push ebp
push esi
push edi
push dword [esp + 0x84]
mov dword [esp + 0x50], ebx
push edx
call fcn.10125e40
mov ecx, dword [esp + 0xa0]
add esp, 0x20
mov dword [esp + 0x6c], edi
cmp ecx, 0xe
mov edi, ebx
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0xc8]
mov edx, 2
cmovle edi, edx
add edi, esi
mov dword [esp + 0x74], edi
test ebp, ebp
jle 0x101259a9
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x90]
add eax, ecx
mov ebp, dword [esp + 0x50]
add esi, ecx
mov dword [esp + 0x14], eax
mov eax, ecx
mov ecx, dword [esp + 0x40]
sub eax, ebp
mov dword [esp + 0x68], esi
mov dword [esp + 0x70], eax
mov dword [esp + 0x3c], ecx
nop
movzx eax, word [eax + ebp]
push edi
push eax
call fcn.1013fb00
movzx ecx, word [esi]
mov ebx, eax
push edi
push ecx
call fcn.1013fb00
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x14]
push edi
movzx ecx, word [eax]
push edi
push ecx
call fcn.1013fb00
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1013fc90
mov esi, dword [esp + 0x70]
lea ebp, [ebp + 2]
add dword [esp + 0x1c], 2
add esi, 2
mov edi, dword [esp + 0x7c]
add esp, 8
sub dword [esp + 0x3c], 1
mov word [ebp - 2], ax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x68], esi
jne 0x10125900
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0xc8]
mov ecx, dword [esp + 0x80]
cmp ecx, 0xe
mov edi, ebx
mov ecx, 2
cmovle edi, ecx
xor eax, eax
add edi, esi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x74], edi
test ebp, ebp
jle 0x10125a94
mov edx, dword [esp + 0x18]
mov esi, edx
mov ebp, dword [esp + 0x90]
mov ecx, dword [esp + 0x54]
add ebp, dword [esp + 0x50]
add ecx, edx
sub esi, dword [esp + 0x50]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x70], esi
nop dword [eax]
movzx eax, word [edx + eax*2]
push edi
push eax
call fcn.1013fb00
movzx ecx, word [esi + ebp]
mov ebx, eax
push edi
push ecx
call fcn.1013fb00
add esp, 0x10
mov esi, eax
mov eax, dword [esp + 0x14]
push edi
movzx ecx, word [eax]
push edi
push ecx
call fcn.1013fb00
mov ecx, 0x127c
add esp, 8
mul ecx
mov edi, eax
mov ecx, edx
mov eax, esi
mov edx, 0xb717
mul edx
add edi, eax
mov eax, ebx
adc ecx, edx
mov edx, 0x366d
mul edx
add edi, eax
adc ecx, edx
add edi, 0x8000
adc ecx, 0
shrd edi, ecx, 0x10
push edi
call fcn.1013fc90
add dword [esp + 0x1c], 2
lea ebp, [ebp + 2]
mov edi, dword [esp + 0x7c]
add esp, 8
mov esi, dword [esp + 0x70]
mov edx, dword [esp + 0x18]
mov word [ebp - 2], ax
mov eax, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0x40]
jl 0x101259f0
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0xc8]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x48]
push esi
push dword [esp + 0x48]
mov dword [esp + 0x18], eax
push dword [esp + 0x6c]
mov eax, dword [esp + 0x2c]
push dword [esp + 0x24]
mov dword [esp + 0x30], eax
push edi
call fcn.101264a0
lea eax, [esi + 2]
add esp, 0x14
cmp eax, 0xe
jg 0x10125ad1
mov ebx, dword [esp + 0x4c]
mov eax, 2
jmp 0x10125ad3
mov eax, ebx
add eax, esi
push eax
lea eax, [ebp*2]
push eax
mov eax, dword [esp + 0x34]
push eax
push dword [esp + 0x5c]
add eax, dword [esp + 0xb0]
push eax
call dword [0x101ee798]
add dword [esp + 0x30], eax
push dword [esp + 0xa8]
mov eax, dword [esp + 0x48]
adc dword [esp + 0x40], edx
push eax
push dword [esp + 0x80]
add eax, dword [esp + 0xc4]
push eax
call dword [0x101ee794]
mov edx, dword [esp + 0x50]
lea eax, [ebp*4]
mov ecx, dword [esp + 0x3c]
add edx, eax
mov eax, dword [esp + 0xcc]
add esp, 0x24
add dword [esp + 0x30], eax
mov eax, dword [esp + 0x58]
add eax, 2
mov dword [esp + 0x2c], edx
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0x7c]
jl 0x10125855
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], ebx
jmp 0x10125b78
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x74]
cmp dword [esp + 0x24], 0
jle 0x10125ba7
cmp edx, dword [esp + 0xac]
jb 0x10125bc7
ja 0x10125b93
cmp eax, dword [esp + 0x88]
jb 0x10125bc7
cmp edx, dword [esp + 0x9c]
ja 0x10125bc7
jb 0x10125ba7
cmp eax, dword [esp + 0x98]
ja 0x10125bc7
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x9c], edx
mov dword [esp + 0x24], eax
cmp eax, 4
jl 0x101257c0
push dword [esp + 0xf0]
push dword [esp + 0xf0]
push dword [esp + 0xf0]
push dword [esp + 0xf0]
push esi
push dword [esp + 0xf4]
push dword [esp + 0xf4]
push dword [esp + 0xf4]
push dword [esp + 0xf4]
push dword [esp + 0xf4]
push dword [esp + 0xf4]
push ecx
push ebx
call fcn.10124d00
add esp, 0x34
mov ebx, eax
jmp 0x10125c1e
xor ebx, ebx
push dword [esp + 0x10]
mov esi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call esi
push dword [esp + 0x24]
call esi
push dword [esp + 0x64]
call esi
push dword [esp + 0x6c]
call esi
push dword [esp + 0x60]
call esi
push dword [esp + 0x78]
call esi
push edi
call esi
add esp, 0x1c
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret