Function at 0x438880
Capabilities:
64-bit execution via heavens gate

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1a4
mov eax, dword [0x4714d0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x476c10]
mov edx, dword [0x476c14]
push ebx
push esi
push edi
test eax, eax
jne 0x4388b9
test edx, edx
jne 0x4388b9
call fcn.004384f0
mov dword [0x476c10], eax
mov dword [0x476c14], edx
mov dword [ebp - 0x12c], edx
mov ebx, eax
test eax, eax
jne 0x4388de
test edx, edx
jne 0x4388de
xor eax, eax
xor edx, edx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0043d8bb
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x1a0]
mov dword [ebp - 0x124], ecx
test ecx, ecx
je 0x438949
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x134], edx
push 0x33
call fcn.00438901
mov eax, dword [ebp - 0x164]
lea ecx, [ebp - 0x110]
mov esi, dword [ebp - 0x12c]
cdq
add eax, ebx
mov dword [ebp - 0x124], ecx
adc edx, esi
test ecx, ecx
je 0x4389d3
test eax, eax
jne 0x438972
test edx, edx
je 0x4389d3
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x134], edx
push 0x33
call fcn.00438985
mov eax, dword [ebp - 0x88]
test eax, eax
je 0x4388c9
xor ecx, ecx
lea edx, [ebp - 0x160]
add eax, ebx
mov dword [ebp - 0x124], edx
adc ecx, esi
test edx, edx
je 0x438a60
test eax, eax
jne 0x4389ff
test ecx, ecx
je 0x438a60
mov dword [ebp - 0x138], eax
mov dword [ebp - 0x134], ecx
push 0x33
call fcn.00438a12
mov eax, dword [ebp - 0x14c]
shl eax, 2
push eax
push 0
push dword [0x476ae0]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
mov dword [ebp - 0x11c], edi
test edi, edi
je 0x4388c9
mov eax, dword [ebp - 0x14c]
mov ecx, dword [ebp - 0x144]
lea edx, [eax*4]
xor eax, eax
add ecx, ebx
adc eax, esi
push eax
push ecx
mov ecx, edi
call fcn.004383d0
mov eax, dword [ebp - 0x14c]
add esp, 8
add eax, eax
push eax
push 0
push dword [0x476ae0]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [ebp - 0x118], eax
test eax, eax
jne 0x438ae4
xorps xmm0, xmm0
movlpd qword [ebp - 0x128], xmm0
jmp 0x438be3
mov eax, dword [ebp - 0x14c]
mov ecx, dword [ebp - 0x13c]
lea edx, [eax + eax]
xor eax, eax
add ecx, ebx
adc eax, esi
push eax
push ecx
mov ecx, dword [ebp - 0x118]
call fcn.004383d0
mov eax, dword [ebp - 0x148]
add esp, 8
shl eax, 2
push eax
push 0
push dword [0x476ae0]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 0x114], eax
test eax, eax
jne 0x438b3b
xorps xmm0, xmm0
movlpd qword [ebp - 0x128], xmm0
jmp 0x438bc4
mov eax, dword [ebp - 0x148]
mov ecx, dword [ebp - 0x140]
lea edx, [eax*4]
xor eax, eax
add ecx, ebx
adc eax, esi
push eax
push ecx
mov ecx, dword [ebp - 0x114]
call fcn.004383d0
xor edx, edx
add esp, 8
cmp dword [ebp - 0x14c], edx
jbe 0x438b9a
mov edi, edi
mov eax, dword [ebp - 0x114]
mov ecx, dword [eax + edx*4]
xor eax, eax
add ecx, ebx
adc eax, esi
push eax
push ecx
call fcn.00438450
add esp, 8
test al, al
jne 0x438c15
inc edx
cmp edx, dword [ebp - 0x14c]
jb 0x438b70
xorps xmm0, xmm0
movlpd qword [ebp - 0x128], xmm0
mov eax, dword [ebp - 0x114]
test eax, eax
je 0x438bc4
push eax
push 0
push dword [0x476ae0]
call edi
mov dword [ebp - 0x114], 0
mov eax, dword [ebp - 0x118]
test eax, eax
je 0x438be3
push eax
push 0
push dword [0x476ae0]
call edi
mov dword [ebp - 0x118], 0
mov eax, dword [ebp - 0x11c]
test eax, eax
je 0x438bf8
push eax
push 0
push dword [0x476ae0]
call edi
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x128]
xor ecx, ebp
mov edx, dword [ebp - 0x124]
pop edi
pop esi
pop ebx
call fcn.0043d8bb
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x118]
movzx ecx, word [eax + edx*2]
mov eax, dword [ebp - 0x11c]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
add eax, ebx
mov dword [ebp - 0x128], eax
adc ecx, esi
mov dword [ebp - 0x124], ecx
jmp 0x438ba5