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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4ca9aa
mov eax, dword fs:[0]
push eax
sub esp, 0x88
push ebx
push esi
push edi
mov eax, dword [0x503870]
xor eax, esp
push eax
lea eax, [esp + 0x98]
mov dword fs:[0], eax
lea eax, [esp + 0x7c]
push eax
call fcn.00507a00
xor edi, edi
mov dword [esp + 0xa0], edi
lea ecx, [esp + 0x4c]
push ecx
call fcn.00507a00
mov byte [esp + 0xa0], 1
lea edx, [esp + 0x64]
push edx
call fcn.00507a00
mov byte [esp + 0xa0], 2
mov eax, dword [0x50a72c]
push eax
call fcn.005016e0
mov esi, dword [eax + 0x10]
sub esi, dword [eax + 0xc]
mov dword [esp + 0x2c], edi
sar esi, 2
cmp esi, edi
jle 0x5255fd
mov ecx, dword [0x50a72c]
push ecx
call fcn.005016e0
mov ebx, dword [esp + 0x2c]
call fcn.00531b70
mov edi, dword [eax]
mov ebx, dword [edi + 4]
push 0x4dda14
call 0x55a5a0
mov ecx, eax
call 0x559f10
test eax, eax
jne 0x5255ec
mov ebx, dword [edi + 4]
push 0x4dda0c
call 0x55a5a0
mov ecx, eax
call 0x559f10
cmp eax, 1
jne 0x5255be
mov edx, dword [esp + 0x58]
mov dword [esp + 0x38], edi
test edx, edx
jne 0x525575
xor ecx, ecx
jmp 0x52557e
mov ecx, dword [esp + 0x60]
sub ecx, edx
sar ecx, 2
mov eax, dword [esp + 0x5c]
mov ebx, eax
sub ebx, edx
sar ebx, 2
cmp ebx, ecx
jae 0x525598
mov dword [eax], edi
add eax, 4
mov dword [esp + 0x5c], eax
jmp 0x5255ec
mov edi, eax
cmp edx, eax
jbe 0x5255a3
call 0x5846f9
mov eax, dword [esp + 0x4c]
push edi
push eax
lea edx, [esp + 0x40]
push edx
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x5c]
call fcn.0050a020
jmp 0x5255ec
mov ebx, dword [edi + 4]
push 0x4dda0c
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov dword [esp + 0x38], edi
lea ebx, [esp + 0x38]
lea edi, [esp + 0x64]
cmp eax, 2
je 0x5255e7
lea edi, [esp + 0x7c]
call fcn.00504170
mov eax, dword [esp + 0x2c]
inc eax
cmp eax, esi
mov dword [esp + 0x2c], eax
jl 0x525519
mov ecx, dword [esp + 0x8c]
sub ecx, dword [esp + 0x88]
sar ecx, 2
test ecx, ecx
ja 0x525683
mov eax, dword [esp + 0x5c]
sub eax, dword [esp + 0x58]
sar eax, 2
test eax, eax
ja 0x525683
mov edx, dword [esp + 0x74]
sub edx, dword [esp + 0x70]
sar edx, 2
test edx, edx
ja 0x525683
mov byte [esp + 0xa0], 1
lea eax, [esp + 0x64]
push eax
call fcn.00504100
mov byte [esp + 0xa0], 0
lea ecx, [esp + 0x4c]
push ecx
call fcn.00504100
mov dword [esp + 0xa0], 0xffffffff
lea edx, [esp + 0x7c]
push edx
call fcn.00504100
xor al, al
mov ecx, dword [esp + 0x98]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
cmp byte [ebp + 0xc], 0
je 0x5256a8
mov edi, dword [ebp + 8]
call fcn.00519790
mov eax, dword [edi + 0x20]
push 0
push 0
push 0x9c44
push eax
call dword [fcn.004cd5fc]
mov ebx, edi
jmp 0x5256ab
mov ebx, dword [ebp + 8]
call fcn.004f96b0
mov ecx, eax
call fcn.005142e0
cmp eax, 0xffffffff
jne 0x525745
call fcn.004f96b0
mov ecx, eax
call fcn.00514420
cmp eax, 0xffffffff
jne 0x525745
call fcn.004f96b0
mov ecx, eax
call fcn.00514560
cmp eax, 0xffffffff
jne 0x525745
push 0x4e1d60
push 0
push 1
mov esi, ebx
call fcn.00517740
mov byte [esp + 0xa0], 1
lea ecx, [esp + 0x64]
push ecx
call fcn.00504100
mov byte [esp + 0xa0], 0
lea edx, [esp + 0x4c]
push edx
call fcn.00504100
mov dword [esp + 0xa0], 0xffffffff
lea eax, [esp + 0x7c]
push eax
call fcn.00504100
xor al, al
mov ecx, dword [esp + 0x98]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edi, ebx
mov byte [0x50a71c], 1
call fcn.00519790
mov ecx, dword [esp + 0x8c]
sub ecx, dword [esp + 0x88]
xor edi, edi
sar ecx, 2
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], edi
test ecx, ecx
jbe 0x5258ac
call fcn.004f96b0
mov ecx, eax
call fcn.005142e0
cmp eax, 0xffffffff
jne 0x52579b
push 0x4e1d84
push edi
push 1
mov esi, ebx
call fcn.00517740
jmp 0x5258ac
call fcn.004f96b0
mov ecx, eax
call fcn.005142e0
lea edx, [esp + 0x38]
mov dword [esp + 0x38], eax
push edx
lea eax, [esp + 0x48]
push eax
call fcn.00531ae0
mov eax, dword [0x50a718]
mov ecx, dword [eax + 0x18]
mov esi, dword [esp + 0x44]
mov eax, dword [eax]
mov dword [esp + 0x40], ecx
test esi, esi
je 0x5257d4
cmp esi, eax
je 0x5257d9
call 0x5846f9
mov edi, dword [esp + 0x48]
cmp edi, dword [esp + 0x40]
je 0x525816
test esi, esi
jne 0x525833
call 0x5846f9
cmp edi, dword [esi + 0x18]
jne 0x5257f6
call 0x5846f9
mov eax, dword [edi + 0x10]
mov eax, dword [eax + 4]
push 0x4de11c
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov ebx, dword [ebp + 8]
mov dword [esp + 0x24], eax
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x18], 0
jne 0x525851
mov ecx, esi
call fcn.005142e0
cmp eax, 0xffffffff
jne 0x525837
xor esi, esi
jmp 0x525854
mov esi, dword [esi]
jmp 0x5257ec
mov ecx, esi
call fcn.005142e0
lea edx, [esp + 0x38]
push edx
mov dword [esp + 0x3c], eax
call fcn.00504040
mov eax, dword [eax]
mov dword [esi + 0x18], eax
mov esi, dword [esi + 0x18]
cmp dword [esi + 8], 0
jne 0x525878
mov ebx, dword [esi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push eax
call fcn.004e7980
mov ebx, dword [ebp + 8]
add esp, 4
mov dword [esi + 8], eax
mov ecx, dword [esp + 0x24]
mov esi, dword [esi + 8]
push ecx
push esi
push 0x4e1db0
push 0
push 1
push ebx
call fcn.005178a0
mov edi, dword [esp + 0xa4]
sub edi, dword [esp + 0xa0]
add esp, 0x18
sar edi, 2
sub edi, dword [esp + 0x24]
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x5c]
sub edx, dword [esp + 0x58]
xor eax, eax
sar edx, 2
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], eax
test edx, edx
jbe 0x525a0a
call fcn.004f96b0
mov ecx, eax
call fcn.00514420
cmp eax, 0xffffffff
jne 0x5258ef
push 0x4e1dc8
push 0
push 1
mov esi, ebx
call fcn.00517740
jmp 0x525a0a
call fcn.004f96b0
mov ecx, eax
call fcn.00514420
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x48]
push ecx
call fcn.00531ae0
mov eax, dword [0x50a718]
mov edx, dword [eax + 0x18]
mov esi, dword [esp + 0x44]
mov eax, dword [eax]
mov dword [esp + 0x40], edx
test esi, esi
je 0x525928
cmp esi, eax
je 0x52592d
call 0x5846f9
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x40]
je 0x525976
test esi, esi
jne 0x525993
call 0x5846f9
mov ecx, dword [esp + 0x48]
cmp ecx, dword [esi + 0x18]
jne 0x52594e
call 0x5846f9
mov edx, dword [esp + 0x48]
mov eax, dword [edx + 0x10]
mov eax, dword [eax + 4]
push 0x4de11c
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov edi, dword [esp + 0x1c]
mov ebx, dword [ebp + 8]
mov dword [esp + 0x28], eax
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x1c], 0
jne 0x5259b1
mov ecx, esi
call fcn.00514420
cmp eax, 0xffffffff
jne 0x525997
xor esi, esi
jmp 0x5259b4
mov esi, dword [esi]
jmp 0x525940
mov ecx, esi
call fcn.00514420
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
call fcn.00504040
mov ecx, dword [eax]
mov dword [esi + 0x1c], ecx
mov esi, dword [esi + 0x1c]
cmp dword [esi + 8], 0
jne 0x5259dc
mov ebx, dword [esi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push eax
call fcn.004e7980
mov edi, dword [esp + 0x20]
mov ebx, dword [ebp + 8]
add esp, 4
mov dword [esi + 8], eax
mov edx, dword [esp + 0x28]
mov esi, dword [esi + 8]
push edx
push esi
push 0x4e1db0
push 0
push 1
push ebx
call fcn.005178a0
mov eax, dword [esp + 0x74]
sub eax, dword [esp + 0x70]
add esp, 0x18
sar eax, 2
sub eax, dword [esp + 0x28]
mov dword [esp + 0x20], eax
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x74]
sub eax, dword [esp + 0x70]
sar eax, 2
test eax, eax
jbe 0x525b61
call fcn.004f96b0
mov ecx, eax
call fcn.00514560
cmp eax, 0xffffffff
jne 0x525a4d
push 0x4e1df4
push 0
push 1
mov esi, ebx
call fcn.00517740
jmp 0x525b61
call fcn.004f96b0
mov ecx, eax
call fcn.00514560
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x48]
push edx
mov dword [esp + 0x40], eax
call fcn.00531ae0
mov eax, dword [0x50a718]
mov ecx, dword [eax + 0x18]
mov esi, dword [esp + 0x44]
mov eax, dword [eax]
mov dword [esp + 0x40], ecx
test esi, esi
je 0x525a86
cmp esi, eax
je 0x525a8b
call 0x5846f9
mov ebx, dword [esp + 0x48]
cmp ebx, dword [esp + 0x40]
je 0x525ac9
test esi, esi
jne 0x525ae6
call 0x5846f9
cmp ebx, dword [esi + 0x18]
jne 0x525aa8
call 0x5846f9
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + 4]
push 0x4de11c
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x20], 0
jne 0x525b04
mov ecx, esi
call fcn.00514560
cmp eax, 0xffffffff
jne 0x525aea
xor esi, esi
jmp 0x525b07
mov esi, dword [esi]
jmp 0x525a9e
mov ecx, esi
call fcn.00514560
lea edx, [esp + 0x38]
push edx
mov dword [esp + 0x3c], eax
call fcn.00504040
mov eax, dword [eax]
mov dword [esi + 0x20], eax
mov esi, dword [esi + 0x20]
cmp dword [esi + 8], 0
jne 0x525b2c
mov ebx, dword [esi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push eax
call fcn.004e7980
mov edi, dword [esp + 0x20]
add esp, 4
mov dword [esi + 8], eax
mov ebx, dword [esp + 0x2c]
mov esi, dword [esi + 8]
mov ecx, dword [ebp + 8]
push ebx
push esi
push 0x4e1db0
push 0
push 1
push ecx
call fcn.005178a0
mov eax, dword [esp + 0x8c]
sub eax, dword [esp + 0x88]
add esp, 0x18
sar eax, 2
sub eax, ebx
mov dword [esp + 0x18], eax
test edi, edi
jle 0x525d73
mov esi, dword [ebp + 8]
push 0x4e1e20
push 0
push 1
call fcn.00517740
call fcn.004f96b0
mov ecx, eax
call fcn.005142e0
lea edx, [esp + 0x38]
mov dword [esp + 0x38], eax
push edx
lea eax, [esp + 0x48]
push eax
call fcn.004e8640
mov eax, dword [0x50a73c]
mov edi, dword [esp + 0x44]
mov esi, dword [eax + 0x18]
mov eax, dword [eax]
test edi, edi
je 0x525baf
cmp edi, eax
je 0x525bb4
call 0x5846f9
cmp dword [esp + 0x48], esi
je 0x525cf7
mov edi, edi
mov ebx, dword [0x50afd4]
push 0x4dc87c
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov esi, eax
test edi, edi
jne 0x525c1d
call 0x5846f9
xor eax, eax
mov ebx, dword [esp + 0x48]
cmp ebx, dword [eax + 0x18]
jne 0x525bf2
call 0x5846f9
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + 4]
push 0x4dc80c
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov ebx, dword [esp + 0x1c]
imul eax, ebx
sub esi, eax
jns 0x525c21
dec ebx
mov dword [esp + 0x1c], ebx
jmp 0x525bc0
mov eax, dword [edi]
jmp 0x525be4
test ebx, ebx
jne 0x525c6e
test edi, edi
jne 0x525c4f
call 0x5846f9
mov esi, dword [esp + 0x48]
cmp esi, dword [edi + 0x18]
jne 0x525c3c
call 0x5846f9
mov esi, dword [esi + 0x10]
call fcn.00506b80
cmp dword [eax + 0x18], 8
jb 0x525c53
mov eax, dword [eax + 4]
jmp 0x525c56
mov edi, dword [edi]
jmp 0x525c2e
add eax, 4
mov ecx, dword [ebp + 8]
push eax
push 0x4e1e38
push 0
push 1
push ecx
call fcn.005178a0
jmp 0x525d70
test edi, edi
jne 0x525c9a
call 0x5846f9
xor eax, eax
mov esi, dword [esp + 0x48]
cmp esi, dword [eax + 0x18]
jne 0x525c87
call 0x5846f9
mov esi, dword [esi + 0x10]
call fcn.00506b80
cmp dword [eax + 0x18], 8
jb 0x525c9e
mov eax, dword [eax + 4]
jmp 0x525ca1
mov eax, dword [edi]
jmp 0x525c79
add eax, 4
mov esi, dword [ebp + 8]
push ebx
push eax
push 0x4e1e58
push 0
push 1
push esi
call fcn.005178a0
add esp, 0x18
test edi, edi
jne 0x525cf3
call 0x5846f9
mov edx, dword [esp + 0x48]
cmp edx, dword [edi + 0x18]
jne 0x525ccf
call 0x5846f9
mov eax, dword [esp + 0x48]
mov edx, dword [eax + 0x10]
push esi
mov ecx, ebx
call fcn.00527240
test al, al
jne 0x525d73
mov dword [esp + 0x1c], 0
jmp 0x525d73
mov edi, dword [edi]
jmp 0x525cc1
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x18], 0
jne 0x525d2e
mov ecx, esi
call fcn.005142e0
cmp eax, 0xffffffff
jne 0x525d14
xor esi, esi
jmp 0x525d31
mov ecx, esi
call fcn.005142e0
lea ecx, [esp + 0x38]
push ecx
mov dword [esp + 0x3c], eax
call fcn.00504040
mov edx, dword [eax]
mov dword [esi + 0x18], edx
mov esi, dword [esi + 0x18]
cmp dword [esi + 8], 0
jne 0x525d52
mov ebx, dword [esi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push eax
call fcn.004e7980
add esp, 4
mov dword [esi + 8], eax
mov esi, dword [esi + 8]
mov eax, dword [ebp + 8]
push esi
push 0x4e0630
push 0
push 1
push eax
call fcn.005178a0
mov dword [esp + 0x30], 0
add esp, 0x14
cmp dword [esp + 0x20], 0
jle 0x525f93
mov esi, dword [ebp + 8]
push 0x4e1e70
push 0
push 1
call fcn.00517740
call fcn.004f96b0
mov ecx, eax
call fcn.00514420
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x48]
push edx
mov dword [esp + 0x40], eax
call fcn.004e8640
mov eax, dword [0x50a73c]
mov edi, dword [esp + 0x44]
mov esi, dword [eax + 0x18]
mov eax, dword [eax]
test edi, edi
je 0x525dc4
cmp edi, eax
je 0x525dc9
call 0x5846f9
cmp dword [esp + 0x48], esi
je 0x525f17
jmp 0x525de0
mov ebx, dword [0x50afd4]
push 0x4dc87c
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov esi, eax
test edi, edi
jne 0x525e3d
call 0x5846f9
xor eax, eax
mov ebx, dword [esp + 0x48]
cmp ebx, dword [eax + 0x18]
jne 0x525e12
call 0x5846f9
mov eax, dword [ebx + 0x10]
mov eax, dword [eax + 4]
push 0x4dc80c
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov ebx, dword [esp + 0x20]
imul eax, ebx
sub esi, eax
jns 0x525e41
dec ebx
mov dword [esp + 0x20], ebx
jmp 0x525de0
mov eax, dword [edi]
jmp 0x525e04
test ebx, ebx
jne 0x525e8e
test edi, edi
jne 0x525e6f
call 0x5846f9
mov esi, dword [esp + 0x48]
cmp esi, dword [edi + 0x18]
jne 0x525e5c
call 0x5846f9
mov esi, dword [esi + 0x10]
call fcn.00506b80
cmp dword [eax + 0x18], 8
jb 0x525e73
mov eax, dword [eax + 4]
jmp 0x525e76
mov edi, dword [edi]
jmp 0x525e4e
add eax, 4
push eax
mov eax, dword [ebp + 8]
push 0x4e1e38
push 0
push 1
push eax
call fcn.005178a0
jmp 0x525f90
test edi, edi
jne 0x525eba
call 0x5846f9
xor eax, eax
mov esi, dword [esp + 0x48]
cmp esi, dword [eax + 0x18]
jne 0x525ea7
call 0x5846f9
mov esi, dword [esi + 0x10]
call fcn.00506b80
cmp dword [eax + 0x18], 8
jb 0x525ebe
mov eax, dword [eax + 4]
jmp 0x525ec1
mov eax, dword [edi]
jmp 0x525e99
add eax, 4
mov esi, dword [ebp + 8]
push ebx
push eax
push 0x4e1e58
push 0
push 1
push esi
call fcn.005178a0
add esp, 0x18
test edi, edi
jne 0x525f13
call 0x5846f9
mov ecx, dword [esp + 0x48]
cmp ecx, dword [edi + 0x18]
jne 0x525eef
call 0x5846f9
mov edx, dword [esp + 0x48]
mov edx, dword [edx + 0x10]
push esi
mov ecx, ebx
call fcn.00527240
test al, al
jne 0x525f93
mov dword [esp + 0x20], 0
jmp 0x525f93
mov edi, dword [edi]
jmp 0x525ee1
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x1c], 0
jne 0x525f4e
mov ecx, esi
call fcn.00514420
cmp eax, 0xffffffff
jne 0x525f34
xor esi, esi
jmp 0x525f51
mov ecx, esi
call fcn.00514420
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
call fcn.00504040
mov ecx, dword [eax]
mov dword [esi + 0x1c], ecx
mov esi, dword [esi + 0x1c]
cmp dword [esi + 8], 0
jne 0x525f72
mov ebx, dword [esi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push eax
call fcn.004e7980
add esp, 4
mov dword [esi + 8], eax
mov esi, dword [esi + 8]
mov edx, dword [ebp + 8]
push esi
push 0x4e0630
push 0
push 1
push edx
call fcn.005178a0
mov dword [esp + 0x34], 0
add esp, 0x14
xor ebx, ebx
cmp dword [esp + 0x18], ebx
jle 0x5260b6
mov esi, dword [ebp + 8]
push 0x4e1e8c
push ebx
push 1
call fcn.00517740
call fcn.004f96b0
mov ecx, eax
call fcn.00514560
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x48]
push ecx
call fcn.004e8640
mov eax, dword [0x50a73c]
mov edi, dword [esp + 0x44]
mov esi, dword [eax + 0x18]
mov eax, dword [eax]
cmp edi, ebx
je 0x525fe4
cmp edi, eax
je 0x525fe9
call 0x5846f9
cmp dword [esp + 0x48], esi
je 0x526193
jmp 0x526000
mov ebx, dword [0x50afd4]
push 0x4dc87c
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov esi, eax
test edi, edi
jne 0x52605e
call 0x5846f9
xor eax, eax
mov edx, dword [esp + 0x48]
cmp edx, dword [eax + 0x18]
jne 0x526032
call 0x5846f9
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 4]
push 0x4dc80c
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
imul eax, dword [esp + 0x18]
sub esi, eax
jns 0x526062
dec dword [esp + 0x18]
jmp 0x526000
mov eax, dword [edi]
jmp 0x526024
cmp dword [esp + 0x18], 0
jne 0x52610c
test edi, edi
jne 0x526097
call 0x5846f9
mov esi, dword [esp + 0x48]
cmp esi, dword [edi + 0x18]
jne 0x526084
call 0x5846f9
mov esi, dword [esi + 0x10]
call fcn.00506b80
cmp dword [eax + 0x18], 8
jb 0x52609b
mov eax, dword [eax + 4]
jmp 0x52609e
mov edi, dword [edi]
jmp 0x526076
add eax, 4
mov ecx, dword [ebp + 8]
push eax
push 0x4e1e38
push 0
push 1
push ecx
call fcn.005178a0
add esp, 0x14
xor ebx, ebx
mov eax, dword [esp + 0x1c]
add dword [esp + 0x24], eax
mov byte [esp + 0x17], 0
je 0x52620f
mov esi, dword [esp + 0x24]
xor ebx, ebx
test esi, esi
jle 0x5260ef
lea eax, [esp + 0x7c]
call fcn.00531b70
mov ecx, dword [eax]
mov edx, dword [ebp + 8]
push 0
push ecx
push edx
call fcn.00527620
inc ebx
cmp ebx, esi
jl 0x5260d3
mov esi, dword [ebp + 8]
push 0x4e1ea8
push 0
push 1
call fcn.00517740
mov byte [esp + 0x17], 1
xor ebx, ebx
jmp 0x526234
test edi, edi
jne 0x526138
call 0x5846f9
xor eax, eax
mov ebx, dword [esp + 0x48]
cmp ebx, dword [eax + 0x18]
jne 0x526125
call 0x5846f9
mov esi, dword [ebx + 0x10]
call fcn.00506b80
cmp dword [eax + 0x18], 8
jb 0x52613c
mov eax, dword [eax + 4]
jmp 0x52613f
mov eax, dword [edi]
jmp 0x526117
add eax, 4
mov edx, dword [esp + 0x18]
mov esi, dword [ebp + 8]
push edx
push eax
push 0x4e1e58
push 0
push 1
push esi
call fcn.005178a0
add esp, 0x18
test edi, edi
jne 0x52618f
call 0x5846f9
cmp ebx, dword [edi + 0x18]
jne 0x52616d
call 0x5846f9
mov ecx, dword [esp + 0x18]
mov edx, dword [ebx + 0x10]
push esi
call fcn.00527240
test al, al
jne 0x5260b4
mov dword [esp + 0x18], 0
jmp 0x5260b4
mov edi, dword [edi]
jmp 0x526163
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x20], ebx
jne 0x5261c9
mov ecx, esi
call fcn.00514560
cmp eax, 0xffffffff
jne 0x5261af
xor esi, esi
jmp 0x5261cc
mov ecx, esi
call fcn.00514560
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
call fcn.00504040
mov ecx, dword [eax]
mov dword [esi + 0x20], ecx
mov esi, dword [esi + 0x20]
cmp dword [esi + 8], ebx
jne 0x5261ee
mov ebx, dword [esi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push eax
call fcn.004e7980
add esp, 4
mov dword [esi + 8], eax
xor ebx, ebx
mov esi, dword [esi + 8]
mov edx, dword [ebp + 8]
push esi
push 0x4e0630
push ebx
push 1
push edx
call fcn.005178a0
add esp, 0x14
mov dword [esp + 0x18], ebx
jmp 0x5260b6
mov eax, dword [esp + 0x8c]
sub eax, dword [esp + 0x88]
sar eax, 2
test eax, eax
jbe 0x526234
mov esi, dword [ebp + 8]
push 0x4e1ec4
push ebx
push 1
call fcn.00517740
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x20]
mov dword [esp + 0x28], eax
je 0x526747
cmp eax, ebx
mov dword [esp + 0x30], ebx
jle 0x52671c
mov ebx, dword [esp + 0x30]
lea eax, [esp + 0x4c]
call fcn.00531b70
mov ebx, dword [eax]
mov dword [esp + 0x20], ebx
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x1c], 0
jne 0x52629c
mov ecx, esi
call fcn.00514420
cmp eax, 0xffffffff
jne 0x526282
xor esi, esi
jmp 0x52629f
mov ecx, esi
call fcn.00514420
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
call fcn.00504040
mov ecx, dword [eax]
mov dword [esi + 0x1c], ecx
mov esi, dword [esi + 0x1c]
cmp dword [esi + 8], 0
mov dword [esp + 0x24], esi
jne 0x52631b
mov edx, esi
mov ebx, dword [edx + 4]
push 0x4de854
call 0x55a5a0
mov edi, dword [eax]
push 0
push 0
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [0x4cd344]
mov esi, eax
test esi, esi
jne 0x5262df
mov ebx, 0x4daa50
jmp 0x52630e
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call 0x5600c9
add esp, 4
push esi
mov ebx, eax
push ebx
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [0x4cd344]
mov eax, dword [esp + 0x24]
mov dword [eax + 8], ebx
mov ebx, dword [esp + 0x20]
mov esi, eax
mov esi, dword [esi + 8]
call fcn.004f96b0
mov ecx, eax
call fcn.00514420
mov ecx, dword [ebx + 0x20]
push esi
mov esi, dword [ebp + 8]
push ecx
push 0x4e20bc
push 0x4e20cc
mov edi, eax
call fcn.00515fa0
mov edx, dword [ebx + 0x20]
add esp, 0x10
push edi
push edx
call 0x541940
mov esi, eax
mov dword [esp + 0x38], esi
call 0x56aff3
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x526733
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0xa0], 4
mov ebx, dword [esi + 4]
push 0x4dc860
call 0x55a5a0
mov eax, dword [eax]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
mov dword [esp + 0x3c], eax
call dword [0x4cd344]
mov edi, eax
test edi, edi
jne 0x526427
mov ebx, 0x4daa50
mov eax, ebx
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x5263c0
sub eax, edx
sar eax, 1
push eax
push ebx
lea ecx, [esp + 0x24]
call fcn.004e8b30
push ebx
call 0x5600be
mov ebx, dword [esi + 4]
add esp, 4
push 0x4dc858
call 0x55a5a0
mov ecx, eax
call 0x559f10
test eax, eax
jne 0x526469
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x20]
push ecx
mov ecx, dword [ebp + 8]
push eax
push 0x4e20bc
push 0x4e20e4
push 0
push 1
push ecx
call fcn.005178a0
add esp, 0x1c
jmp 0x5266a7
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call 0x5600c9
add esp, 4
push edi
mov ebx, eax
mov eax, dword [esp + 0x28]
push ebx
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
call dword [0x4cd344]
test ebx, ebx
jne 0x5263b8
xor eax, eax
jmp 0x5263cf
mov ebx, dword [esi + 4]
push 0x4dd6bc
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov ebx, dword [esi + 4]
push 0x4dc808
mov dword [esp + 0x28], eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
lea edx, [esp + 0x24]
push edx
mov dword [esp + 0x48], eax
call fcn.00504040
mov edi, dword [eax]
cmp dword [edi + 8], 0
jne 0x52651f
mov ebx, dword [edi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
mov dword [esp + 0x3c], eax
call dword [0x4cd344]
mov ebx, eax
test ebx, ebx
jne 0x5264e3
mov eax, 0x4daa50
jmp 0x52651c
xor ecx, ecx
mov eax, ebx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call 0x5600c9
add esp, 4
push ebx
push eax
push 0xffffffffffffffff
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x30]
push eax
push 0
push 0xfde9
call dword [0x4cd344]
mov eax, dword [esp + 0x3c]
mov dword [edi + 8], eax
mov ecx, dword [esp + 0x44]
mov edi, dword [edi + 8]
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 0x20]
push ecx
mov ecx, dword [ebp + 8]
push edi
push eax
push 0x4e20bc
push 0x4e2104
push 0
push 1
push ecx
call fcn.005178a0
mov ebx, dword [esi + 4]
add esp, 0x20
push 0x4dc808
call 0x55a5a0
mov ecx, eax
call 0x559f10
test eax, eax
jne 0x5265de
call fcn.004f96b0
push 0x4dbbd0
push 0x4dd47c
lea edx, [esp + 0x3c]
push edx
push eax
call fcn.004fa760
mov byte [esp + 0xa0], 5
push ecx
mov ebx, esp
mov dword [esp + 0x48], esp
push 0x4dbbdc
call fcn.004eb300
mov byte [esp + 0xa4], 6
mov eax, dword [esp + 0x38]
test eax, eax
je 0x52673d
mov byte [esp + 0xa4], 5
mov ecx, eax
call fcn.004eb590
mov byte [esp + 0xa0], 4
mov eax, dword [esp + 0x34]
test eax, eax
je 0x5265d4
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
call fcn.004f98f0
jmp 0x5266a7
mov esi, dword [esi + 4]
push 0x4dc808
mov ebx, esi
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov edi, eax
call fcn.004f96b0
mov ecx, eax
call fcn.00501c50
add eax, edi
push eax
call fcn.004f96b0
mov ecx, eax
call fcn.004f8960
mov eax, dword [ebp + 8]
add eax, 0xc20
push eax
mov byte [0x50a74d], 1
mov dword [esp + 0x28], eax
call fcn.00503ca0
mov esi, dword [0x50a72c]
call 0x553660
mov eax, dword [eax + 4]
push 0x4dc808
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov esi, dword [0x50a72c]
add edi, eax
call 0x553660
mov ecx, edi
mov edx, eax
call fcn.00512710
mov edi, dword [ebp + 8]
call fcn.0051fc20
call fcn.004f96b0
mov ecx, eax
call fcn.00502050
inc eax
push eax
call fcn.004f96b0
mov ecx, eax
call fcn.004f8bc0
mov eax, dword [esp + 0x24]
push eax
mov byte [0x50a74d], 1
call fcn.00503dc0
mov esi, dword [esp + 0x38]
call fcn.00512c10
mov ecx, edi
push ecx
mov ecx, eax
call fcn.0051fb80
mov edi, dword [esi + 4]
test edi, edi
je 0x5266be
mov eax, edi
call 0x559a70
push edi
call 0x5600be
add esp, 4
mov dword [esp + 0x44], esi
mov dword [esi], 0x4e6984
mov byte [esp + 0xa0], 4
push esi
call 0x549770
push esi
call 0x5600be
add esp, 4
mov byte [esp + 0xa0], 2
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x526707
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x30]
inc eax
cmp eax, dword [esp + 0x28]
mov dword [esp + 0x30], eax
jl 0x526252
xor ebx, ebx
mov esi, dword [ebp + 8]
push 0x4e1ed8
push ebx
push 1
call fcn.00517740
mov byte [esp + 0x17], 1
jmp 0x526766
push 0x80004005
call fcn.004eb2b0
push 0x80004003
call 0x59f4d0
mov eax, dword [esp + 0x5c]
sub eax, dword [esp + 0x58]
sar eax, 2
test eax, eax
jbe 0x526766
mov esi, dword [ebp + 8]
push 0x4e1ec4
push ebx
push 1
call fcn.00517740
mov ecx, dword [esp + 0x18]
add dword [esp + 0x2c], ecx
je 0x526c63
cmp dword [esp + 0x2c], ebx
mov dword [esp + 0x1c], ebx
jle 0x526c4c
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0x64]
call fcn.00531b70
mov ebx, dword [eax]
mov dword [esp + 0x30], ebx
call fcn.004f96b0
mov esi, eax
cmp dword [esi + 0x20], 0
jne 0x5267cc
mov ecx, esi
call fcn.00514560
cmp eax, 0xffffffff
jne 0x5267b2
xor esi, esi
jmp 0x5267cf
mov ecx, esi
call fcn.00514560
lea edx, [esp + 0x44]
push edx
mov dword [esp + 0x48], eax
call fcn.00504040
mov eax, dword [eax]
mov dword [esi + 0x20], eax
mov esi, dword [esi + 0x20]
cmp dword [esi + 8], 0
mov dword [esp + 0x28], esi
jne 0x52684b
mov ecx, esi
mov ebx, dword [ecx + 4]
push 0x4de854
call 0x55a5a0
mov edi, dword [eax]
push 0
push 0
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [0x4cd344]
mov esi, eax
test esi, esi
jne 0x52680f
mov ebx, 0x4daa50
jmp 0x52683e
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call 0x5600c9
add esp, 4
push esi
mov ebx, eax
push ebx
push 0xffffffffffffffff
push edi
push 0
push 0xfde9
call dword [0x4cd344]
mov eax, dword [esp + 0x28]
mov dword [eax + 8], ebx
mov ebx, dword [esp + 0x30]
mov esi, eax
mov esi, dword [esi + 8]
call fcn.004f96b0
mov ecx, eax
call fcn.00514560
mov ecx, dword [ebx + 0x20]
push esi
mov esi, dword [ebp + 8]
push ecx
push 0x4e20c4
push 0x4e20cc
mov edi, eax
call fcn.00515fa0
mov edx, dword [ebx + 0x20]
add esp, 0x10
push edi
push edx
call 0x541940
mov esi, eax
mov dword [esp + 0x34], esi
call 0x56aff3
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x526733
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0xa0], 0xb
mov ebx, dword [esi + 4]
push 0x4dc860
call 0x55a5a0
mov eax, dword [eax]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
mov dword [esp + 0x5c], eax
call dword [0x4cd344]
mov edi, eax
test edi, edi
jne 0x526957
mov ebx, 0x4daa50
mov eax, ebx
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x5268f0
sub eax, edx
sar eax, 1
push eax
push ebx
lea ecx, [esp + 0x28]
call fcn.004e8b30
push ebx
call 0x5600be
mov ebx, dword [esi + 4]
add esp, 4
push 0x4dc858
call 0x55a5a0
mov ecx, eax
call 0x559f10
test eax, eax
jne 0x526999
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 0x20]
push ecx
mov ecx, dword [ebp + 8]
push eax
push 0x4e20c4
push 0x4e20e4
push 0
push 1
push ecx
call fcn.005178a0
add esp, 0x1c
jmp 0x526bd7
xor ecx, ecx
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call 0x5600c9
add esp, 4
push edi
mov ebx, eax
mov eax, dword [esp + 0x48]
push ebx
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
call dword [0x4cd344]
test ebx, ebx
jne 0x5268e8
xor eax, eax
jmp 0x5268ff
mov ebx, dword [esi + 4]
push 0x4dd6bc
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov ebx, dword [esi + 4]
push 0x4dc808
mov dword [esp + 0x48], eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
lea edx, [esp + 0x44]
push edx
mov dword [esp + 0x2c], eax
call fcn.00504040
mov edi, dword [eax]
cmp dword [edi + 8], 0
jne 0x526a4f
mov ebx, dword [edi + 4]
push 0x4de854
call 0x55a5a0
mov eax, dword [eax]
push 0
push 0
push 0xffffffffffffffff
push eax
push 0
push 0xfde9
mov dword [esp + 0x5c], eax
call dword [0x4cd344]
mov ebx, eax
test ebx, ebx
jne 0x526a13
mov eax, 0x4daa50
jmp 0x526a4c
xor ecx, ecx
mov eax, ebx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call 0x5600c9
add esp, 4
push ebx
push eax
push 0xffffffffffffffff
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x50]
push eax
push 0
push 0xfde9
call dword [0x4cd344]
mov eax, dword [esp + 0x3c]
mov dword [edi + 8], eax
mov ecx, dword [esp + 0x28]
mov edi, dword [edi + 8]
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 0x20]
push ecx
mov ecx, dword [ebp + 8]
push edi
push eax
push 0x4e20c4
push 0x4e2104
push 0
push 1
push ecx
call fcn.005178a0
mov ebx, dword [esi + 4]
add esp, 0x20
push 0x4dc808
call 0x55a5a0
mov ecx, eax
call 0x559f10
test eax, eax
jne 0x526b0e
call fcn.004f96b0
push 0x4dbbd0
push 0x4dd47c
lea edx, [esp + 0x40]
push edx
push eax
call fcn.004fa760
mov byte [esp + 0xa0], 0xc
push ecx
mov ebx, esp
mov dword [esp + 0x48], esp
push 0x4dbbdc
call fcn.004eb300
mov byte [esp + 0xa4], 0xd
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x52673d
mov byte [esp + 0xa4], 0xc
mov ecx, eax
call fcn.004eb590
mov byte [esp + 0xa0], 0xb
mov eax, dword [esp + 0x38]
test eax, eax
je 0x526b04
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
call fcn.004f98f0
jmp 0x526bd7
mov esi, dword [esi + 4]
push 0x4dc808
mov ebx, esi
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov edi, eax
call fcn.004f96b0
mov ecx, eax
call fcn.00501c50
add eax, edi
push eax
call fcn.004f96b0
mov ecx, eax
call fcn.004f8960
mov eax, dword [ebp + 8]
add eax, 0xc20
push eax
mov byte [0x50a74d], 1
mov dword [esp + 0x28], eax
call fcn.00503ca0
mov esi, dword [0x50a72c]
call 0x553660
mov eax, dword [eax + 4]
push 0x4dc808
mov ebx, eax
call 0x55a5a0
mov ecx, eax
call 0x559f10
mov esi, dword [0x50a72c]
add edi, eax
call 0x553660
mov ecx, edi
mov edx, eax
call fcn.00512710
mov edi, dword [ebp + 8]
call fcn.0051fc20
call fcn.004f96b0
mov ecx, eax
call fcn.00502050
inc eax
push eax
call fcn.004f96b0
mov ecx, eax
call fcn.004f8bc0
mov eax, dword [esp + 0x24]
push eax
mov byte [0x50a74d], 1
call fcn.00503dc0
mov esi, dword [esp + 0x34]
call fcn.00512c10
mov ecx, edi
push ecx
mov ecx, eax
call fcn.0051fb80
mov edi, dword [esi + 4]
test edi, edi
je 0x526bee
mov eax, edi
call 0x559a70
push edi
call 0x5600be
add esp, 4
mov dword [esp + 0x44], esi
mov dword [esi], 0x4e6984
mov byte [esp + 0xa0], 0xb
push esi
call 0x549770
push esi
call 0x5600be
add esp, 4
mov byte [esp + 0xa0], 2
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x526c37
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
inc eax
cmp eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
jl 0x526782
xor ebx, ebx
mov esi, dword [ebp + 8]
push 0x4e1ef0
push ebx
push 1
call fcn.00517740
mov byte [esp + 0x17], 1
jmp 0x526c82
mov eax, dword [esp + 0x74]
sub eax, dword [esp + 0x70]
sar eax, 2
test eax, eax
jbe 0x526c82
mov esi, dword [ebp + 8]
push 0x4e1ec4
push ebx
push 1
call fcn.00517740
mov byte [esp + 0xa0], 0x11
mov eax, dword [esp + 0x70]
cmp eax, ebx
je 0x526c9b
push eax
call 0x5600be
add esp, 4
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], ebx
mov byte [esp + 0xa0], 1
mov ecx, dword [esp + 0x64]
push ecx
call 0x5600be
add esp, 4
mov byte [esp + 0xa0], 0x13
mov eax, dword [esp + 0x58]
cmp eax, ebx
je 0x526cd5
push eax
call 0x5600be
add esp, 4
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov byte [esp + 0xa0], 0
mov edx, dword [esp + 0x4c]
push edx
call 0x5600be
add esp, 4
mov dword [esp + 0xa0], 0x15
mov eax, dword [esp + 0x88]
cmp eax, ebx
je 0x526d15
push eax
call 0x5600be
add esp, 4
mov dword [esp + 0x88], ebx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x90], ebx
mov dword [esp + 0xa0], 0xffffffff
mov eax, dword [esp + 0x7c]
push eax
call 0x5600be
mov al, byte [esp + 0x1b]
add esp, 4
mov ecx, dword [esp + 0x98]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8