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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
movaps xmm0, xmmword [0x542580]
call 0x529be9
pop eax
lea esi, [esp + 0x40]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
xor eax, eax
mov word [esi + 0x20], 0
mov dword [esi + 0x1c], eax
mov dword [esi], eax
movups xmmword [esi + 8], xmm0
mov dword [esi + 0x18], eax
mov eax, dword [ebp + 8]
mov byte [esi + 0x1c], 1
lea edi, [esp + 0xc]
mov ecx, edi
push esi
push eax
call fcn.004a2f60
add esp, 8
cmp byte [edi], 4
jne 0x529cc5
mov esi, dword [esp + 0x10]
mov ecx, 0x800
call fcn.00475195
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], 0
lea ebx, [esp + 0x40]
mov edx, esi
mov ecx, ebx
call fcn.004a3170
mov eax, dword [ebx]
mov dword [esp + 0x1c], esi
xor eax, 2
or eax, dword [ebx + 4]
jne 0x529cf4
xor edi, edi
cmp byte [esp + 0x48], 3
jne 0x529d68
mov edi, dword [esp + 0x4c]
mov esi, dword [edi + 4]
mov ebx, dword [edi]
mov eax, dword [esi]
push ebx
call eax
add esp, 4
cmp dword [esi + 4], 0
je 0x529ca6
cmp dword [esi + 8], 9
jb 0x529c98
mov ebx, dword [ebx - 4]
push ebx
push 0
push dword [0x5c9128]
call sub.kernel32.dll_HeapFree
push edi
push 0
push dword [0x5c9128]
call sub.kernel32.dll_HeapFree
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x18], eax
jmp 0x529d68
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
movzx ecx, al
cmp ecx, 4
je 0x529c2e
je 0x529c2e
lea ecx, [esp + 0x40]
mov dword [ecx + 4], esi
mov dword [ecx], eax
call fcn.004cd125
mov esi, eax
jmp 0x52a0c1
mov eax, esi
mov ecx, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
xor edi, edi
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], edi
mov dword [esp + 8], ecx
push 1
push ebx
push edi
push edi
push eax
call sub.kernel32.dll_SetFilePointerEx
test eax, eax
je 0x529d61
sub esi, dword [esp + 0x40]
mov eax, dword [esp + 8]
sbb eax, dword [esp + 0x44]
cmovb esi, edi
cmp dword [esp + 0x18], esi
mov ebx, esi
jb 0x52a168
add ebx, 0x400
jb 0x529d68
mov eax, ebx
and eax, 0x1fff
je 0x52a13b
mov ecx, 0x2000
sub ecx, eax
add ebx, ecx
setb al
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], eax
jmp 0x529d6e
call sub.kernel32.dll_GetLastError
xor edi, edi
mov al, 1
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], ecx
mov dword [esp + 8], edi
mov edi, dword [esp + 0x28]
cmp dword [esp + 8], edi
je 0x529e82
mov esi, dword [esp + 8]
mov ebx, dword [esp + 0x30]
mov eax, edi
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x40]
sub eax, esi
cmp eax, ebx
cmovb ebx, eax
cmp byte [esp + 0x2c], 0
cmovne ebx, eax
mov eax, dword [esp + 0xc]
add eax, esi
push ebx
push eax
call fcn.004a6130
add esp, 8
movzx ecx, byte [esp + 0x40]
mov dword [esp + 0x28], edi
cmp ecx, 4
je 0x529ea3
mov eax, dword [ecx*4 + 0x52a1f0]
mov esi, dword [esp + 0x38]
add eax, esi
jmp eax
lea ecx, [esp + 0xc]
mov edx, edi
push 0x20
call fcn.00487d50
add esp, 4
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov dword [esp + 8], eax
jmp 0x529d8e
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
cmp ecx, edi
cmovbe ecx, edi
test edi, edi
je 0x52a04a
mov edx, ecx
sub edx, edi
jb 0x52a196
cmp ecx, ebx
ja 0x52a1a6
cmp edi, ebx
ja 0x52a1af
mov eax, dword [esp + 0x28]
add edi, dword [esp + 8]
mov ecx, edx
cmp eax, dword [esp + 0x18]
mov dword [esp + 0x14], edi
jne 0x529d78
cmp dword [esp + 0x28], edi
mov ecx, edx
jne 0x529d78
xorps xmm0, xmm0
mov dword [esp + 8], edx
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x40], xmm0
mov esi, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
mov edx, esi
push 0x20
lea edi, [esp + 0x44]
push edi
call fcn.004a6030
add esp, 8
mov bl, byte [esp + 0x20]
cmp bl, 4
je 0x529fb3
movzx eax, bl
mov eax, dword [eax*4 + 0x52a214]
add eax, dword [esp + 0x38]
jmp eax
mov ebx, dword [esp + 0x24]
test ebx, ebx
je 0x52a04a
cmp ebx, 0x21
jae 0x52a188
mov edx, dword [esp + 0x18]
lea ecx, [esp + 0xc]
push ebx
call fcn.00487d50
add esp, 4
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xc]
add eax, edi
push ebx
lea ecx, [esp + 0x44]
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 8]
add edi, ebx
mov dword [esp + 0x14], edi
jmp 0x529d78
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
push dword [esp + 0x1c]
call sub.kernel32.dll_CloseHandle
test ebx, ebx
je 0x52a0c6
mov eax, dword [esp + 0x34]
mov dword [eax], ebx
mov dword [eax + 4], esi
mov dword [eax + 8], edi
mov byte [eax + 0xc], 2
jmp 0x52a133
mov edi, 0x5939dc
xor eax, eax
lea ebx, [esp + 0x20]
lea edx, [esp + 0x40]
lea ecx, [esp + 0xc]
inc eax
mov dword [ebx], esi
mov dword [esp + 0xc], ebx
mov dword [edx], str.failed_to_write_whole_buffer
mov dword [ebx + 4], edi
mov dword [esp + 0x10], 0x478a05
mov dword [edx + 4], eax
mov dword [edx + 0x10], 0
mov dword [edx + 8], ecx
mov dword [edx + 0xc], eax
mov esi, dword [esp + 0x34]
mov ecx, esi
call fcn.0041bb50
mov byte [esi + 0xc], 1
mov esi, dword [ebx]
mov edi, dword [ebx + 4]
push esi
call dword [edi]
add esp, 4
cmp dword [edi + 4], 0
je 0x52a133
cmp dword [edi + 8], 9
jb 0x52a125
mov esi, dword [esi - 4]
push esi
push 0
push dword [0x5c9128]
call sub.kernel32.dll_HeapFree
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], 0
jmp 0x529d6e
lea esi, [esp + 0xc]
xor edx, edx
mov ecx, esi
push ebx
call fcn.00487d50
add esp, 4
mov eax, dword [esi + 4]
mov edi, dword [esi + 8]
mov dword [esp + 0x18], eax
jmp 0x529d36
mov ecx, ebx
mov edx, 0x20
push 0x56b0b0
jmp 0x52a1b8
mov edx, ecx
mov ecx, edi
push 0x56b090
call fcn.00446290
jmp 0x52a1e9
mov edx, ebx
push 0x56b090
jmp 0x52a1b8
mov ecx, edi
mov edx, ebx
push 0x56b0a0
call fcn.00445020
jmp 0x52a1e9
add esp, 4
ud2