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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x72d51c
mov eax, dword fs:[0]
push eax
sub esp, 0xb0
push ebx
push esi
push edi
mov eax, dword [0x820ac4]
xor eax, esp
push eax
lea eax, [esp + 0xc0]
mov dword fs:[0], eax
mov dword [esp + 0x24], ecx
lea ebx, [ecx + 0x54]
push dword [ebx + 4]
mov edi, ebx
lea esi, [esp + 0x20]
call fcn.0042dad8
jmp 0x503859
lea esi, [esp + 0x1c]
call fcn.004b0a79
mov esi, eax
lea ecx, [esi + 0x22]
mov eax, dword [ecx]
call dword [eax + 0x10]
neg eax
jns 0x503837
lea eax, [esp + 0x48]
push eax
mov eax, esi
call fcn.0045c3be
xor edi, edi
mov dword [esp + 0xc8], edi
cmp dword [eax + 0x18], 0x10
jb 0x5037e4
mov eax, dword [eax + 4]
jmp 0x5037e7
add eax, 4
movsx ecx, byte [esi + 0xd]
push edi
push dword [esi + 7]
push ecx
movzx ecx, word [esi + 4]
push ecx
push eax
push dword [esp + 0x38]
call fcn.00509a84
or dword [esp + 0xc8], 0xffffffff
push edi
push 1
lea ecx, [esp + 0x50]
call fcn.00407277
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x1c]
push edi
push dword [ebx + 8]
lea eax, [edi + 0x3a]
call fcn.0050585b
add dword [ebx + 8], 0xffffffc6
pop ecx
pop ecx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], edi
jmp 0x503857
mov esi, dword [esp + 0x1c]
test esi, esi
jne 0x503844
call fcn.0054b876
mov eax, dword [esp + 0x20]
cmp eax, dword [esi + 8]
jb 0x503852
call fcn.0054b876
add dword [esp + 0x20], 0x3a
mov edi, ebx
push dword [ebx + 8]
lea esi, [esp + 0x14]
call fcn.0042dad8
mov edi, esi
lea esi, [esp + 0x1c]
call fcn.0044de3a
test al, al
jne 0x5037ad
mov ebx, dword [esp + 0x24]
mov esi, dword [ebx + 0x1fc]
add ebx, 0x1f8
cmp esi, dword [ebx + 8]
jbe 0x503892
call fcn.0054b876
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov esi, dword [ebx + 8]
cmp dword [ebx + 4], esi
jbe 0x5038a7
call fcn.0054b876
mov edi, dword [esp + 0x10]
test edi, edi
je 0x5038b3
cmp edi, ebx
je 0x5038b8
call fcn.0054b876
cmp dword [esp + 0x14], esi
lea esi, [esp + 0x10]
je 0x503939
call fcn.004b0a79
lea ecx, [eax + 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp eax, 0x258
jle 0x503927
mov ecx, dword [esp + 0x14]
mov edx, dword [ebx + 8]
mov dword [esp + 0x20], ecx
add ecx, 0x20
cmp ecx, edx
mov dword [esp + 0x1c], edi
je 0x50390e
lea eax, [ecx + 0x18]
lea edi, [eax - 0x38]
mov esi, ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, dword [eax]
mov dword [eax - 0x20], esi
mov esi, dword [eax + 4]
mov dword [eax - 0x1c], esi
add ecx, 0x20
add eax, 0x20
cmp ecx, edx
jne 0x5038ef
mov eax, dword [esp + 0x1c]
add dword [ebx + 8], 0xffffffe0
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
jmp 0x50389a
lea edi, [esp + 0x64]
lea esi, [esp + 0x10]
call fcn.00504d63
jmp 0x50389a
mov ebx, dword [esp + 0x24]
push dword [ebx + 8]
add ebx, 4
mov edi, ebx
mov byte [esp + 0x1f], 0
call fcn.0042dad8
jmp 0x503994
lea esi, [esp + 0x10]
call fcn.004b0a79
mov eax, dword [eax]
lea esi, [eax + 0x2b4]
add eax, 0x48
mov dword [esi], 0xa
call fcn.004e053c
mov dword [esi], eax
mov esi, dword [esp + 0x10]
test esi, esi
jne 0x50397f
call fcn.0054b876
mov eax, dword [esp + 0x14]
cmp eax, dword [esi + 8]
jb 0x50398d
call fcn.0054b876
add dword [esp + 0x14], 4
mov edi, ebx
push dword [ebx + 8]
lea esi, [esp + 0x20]
call fcn.0042dad8
mov edi, esi
lea esi, [esp + 0x10]
call fcn.0044de3a
test al, al
jne 0x503951
push ebx
lea eax, [esp + 0x34]
push eax
call fcn.00504b60
mov dword [esp + 0xc8], 1
push dword [esp + 0x38]
lea edi, [esp + 0x34]
lea esi, [esp + 0x14]
call fcn.0042dad8
cmp dword [esp + 0x34], 0
jne 0x5039e1
xor ebx, ebx
jmp 0x5039ec
mov ebx, dword [esp + 0x38]
sub ebx, dword [esp + 0x34]
sar ebx, 2
push dword [esp + 0x34]
lea edi, [esp + 0x34]
lea esi, [esp + 0x2c]
call fcn.0042dad8
push dword [esp + 0x34]
lea esi, [esp + 0x20]
call fcn.0042dad8
shr ebx, 1
push ebx
lea edi, [esp + 0x68]
lea eax, [esp + 0x2c]
call fcn.00504d8d
mov ecx, dword [eax]
mov eax, dword [eax + 4]
push dword [esp + 0x14]
mov dword [esp + 0x2c], ecx
push eax
mov eax, dword [esp + 0x28]
call fcn.00505997
xor eax, eax
pop ecx
pop ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov byte [esp + 0xc8], 2
push dword [esp + 0x34]
lea edi, [esp + 0x34]
lea esi, [esp + 0x14]
call fcn.0042dad8
jmp 0x503b9e
lea esi, [esp + 0x10]
call fcn.004b0a79
mov ebx, dword [eax]
xor eax, eax
cmp dword [ebx + 0x2b4], eax
jbe 0x503ad7
cmp dword [esp + 0x34], eax
je 0x503a85
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x34]
sar eax, 2
push dword [esp + 0x34]
lea edi, [esp + 0x34]
lea esi, [esp + 0x68]
mov dword [esp + 0x44], eax
call fcn.0042dad8
mov eax, dword [esp + 0x40]
shr eax, 1
push eax
lea edi, [esp + 0xb8]
mov eax, esi
call fcn.00504d8d
mov esi, eax
mov eax, dword [esi]
test eax, eax
je 0x503abd
cmp eax, dword [esp + 0x10]
je 0x503ac2
call fcn.0054b876
mov eax, dword [esp + 0x14]
cmp dword [esi + 4], eax
jb 0x503ad7
add dword [ebx + 0x2b4], 0x4e20
jmp 0x503afa
lea ecx, [ebx + 0x178]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp eax, 0x3c
jge 0x503afa
lea esi, [esp + 0x10]
call fcn.004b0a79
push eax
lea eax, [esp + 0x4c]
call fcn.00504bdb
mov ecx, dword [ebx + 0xdc]
test ecx, ecx
mov eax, dword [ebx + 0xd8]
jl 0x503b32
jg 0x503b10
test eax, eax
jbe 0x503b32
push 0
push 0x400
push ecx
push eax
call fcn.0054eaf0
push 0
push 0x64
push edx
push eax
call fcn.0054eaf0
add eax, 0x64
add dword [ebx + 0x2b4], eax
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x18]
test al, al
je 0x503b4c
add dword [ebx + 0x2b4], 0x12c
mov byte [esp + 0x1b], 1
mov eax, dword [0x8b684c]
cmp byte [eax + 0xa0], 0
je 0x503b7e
mov ecx, dword [ebx + 0x40]
lea eax, [esp + 0x1c]
call fcn.004c3d0b
cmp byte [esp + 0x1d], 0
je 0x503b7e
mov eax, dword [ebx + 0x304]
add eax, 0x190
add dword [ebx + 0x2b4], eax
mov esi, dword [esp + 0x10]
test esi, esi
jne 0x503b8b
call fcn.0054b876
mov eax, dword [esp + 0x14]
cmp eax, dword [esi + 8]
jb 0x503b99
call fcn.0054b876
add dword [esp + 0x14], 4
push dword [esp + 0x38]
lea edi, [esp + 0x34]
lea esi, [esp + 0x2c]
call fcn.0042dad8
mov edi, esi
lea esi, [esp + 0x10]
call fcn.0044de3a
test al, al
jne 0x503a5f
xor esi, esi
cmp dword [esp + 0x4c], esi
je 0x503bd5
mov esi, dword [esp + 0x50]
sub esi, dword [esp + 0x4c]
sar esi, 2
mov ebx, dword [esp + 0x24]
lea eax, [ebx + 4]
call fcn.004bca88
push 3
xor edx, edx
pop ecx
div ecx
cmp esi, eax
jbe 0x503c64
push dword [esp + 0x50]
lea edi, [esp + 0x4c]
lea esi, [esp + 0x2c]
call fcn.0042dad8
push dword [esp + 0x4c]
lea esi, [esp + 0x14]
call fcn.0042dad8
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x14]
lea edi, [esp + 0x1c]
lea esi, [esp + 0x40]
mov dword [esp + 0x44], eax
call fcn.0044de3a
test al, al
je 0x503c4a
push dword [esp + 0x2c]
push dword [esp + 0x18]
call fcn.004f3a6a
pop ecx
pop ecx
lea eax, [ebx + 4]
call fcn.004bca88
push 3
pop ecx
xor edx, edx
div ecx
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.00504ea0
push dword [esp + 0x4c]
lea edi, [esp + 0x4c]
lea esi, [esp + 0x14]
call fcn.0042dad8
jmp 0x503cac
lea esi, [esp + 0x10]
call fcn.004b0a79
mov eax, dword [eax]
mov esi, dword [esp + 0x10]
add dword [eax + 0x2b4], 0x2710
test esi, esi
jne 0x503c99
call fcn.0054b876
mov eax, dword [esp + 0x14]
cmp eax, dword [esi + 8]
jb 0x503ca7
call fcn.0054b876
add dword [esp + 0x14], 4
push dword [esp + 0x50]
lea edi, [esp + 0x4c]
lea esi, [esp + 0x2c]
call fcn.0042dad8
mov edi, esi
lea esi, [esp + 0x10]
call fcn.0044de3a
test al, al
jne 0x503c77
lea esi, [esp + 0x48]
call fcn.00519c69
or dword [esp + 0xc8], 0xffffffff
lea esi, [esp + 0x30]
call fcn.00519c69
mov eax, dword [0x8b684c]
mov eax, dword [eax + 0x70]
test eax, eax
mov dword [ebx + 0x70], eax
jne 0x503dc6
lea esi, [esp + 0x6c]
mov edi, ebx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
call fcn.00504a8e
mov esi, dword [esp + 0x6c]
cmp esi, dword [esp + 0x70]
ja 0x503d2d
mov esi, dword [esp + 0x70]
mov eax, dword [ebx + 0x6c]
lea ecx, [eax + 0x1b0]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp eax, 0xb4
jl 0x503d9b
cmp byte [esp + 0x1b], 0
je 0x503d71
cmp esi, 0x2800
jb 0x503d79
cmp esi, 0x7800
jb 0x503d8a
cmp esi, 0xf000
jb 0x503d9b
cmp esi, 0x19000
sbb eax, eax
and eax, 0xfffffffb
add eax, 0x3c
jmp 0x503dc3
cmp esi, 0x1400
jae 0x503d82
mov dword [ebx + 0x70], 0x1e
jmp 0x503dc6
cmp esi, 0x2800
jae 0x503d93
mov dword [ebx + 0x70], 0x28
jmp 0x503dc6
cmp esi, 0x7800
jae 0x503da4
mov dword [ebx + 0x70], 0x32
jmp 0x503dc6
cmp esi, 0xf000
jae 0x503db5
mov dword [ebx + 0x70], 0x3c
jmp 0x503dc6
cmp esi, 0x19000
sbb eax, eax
and eax, 0xfffffff6
add eax, 0x50
mov dword [ebx + 0x70], eax
lea eax, [esp + 0x48]
xor edi, edi
push eax
mov dword [esp + 0x4c], edi
mov dword [esp + 0x54], edi
call fcn.004947d4
pop ecx
mov dword [esp + 0x84], edi
mov dword [esp + 0x88], edi
mov dword [esp + 0x8c], edi
mov dword [esp + 0xac], edi
mov dword [esp + 0xb0], edi
lea esi, [esp + 0x84]
mov dword [esp + 0xc8], 3
call 0x49483b
cmp dword [esp + 0x84], edi
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], edi
je 0x503e3a
cmp eax, dword [esp + 0x84]
jbe 0x503e3a
sub eax, dword [esp + 0x84]
mov dword [esp + 0x24], eax
mov edi, dword [ebx + 0x70]
xor esi, esi
test edi, edi
je 0x503e5b
lea eax, [ebx + 4]
call fcn.004bca88
cmp eax, edi
jbe 0x503e5b
lea eax, [ebx + 4]
call fcn.004bca88
mov esi, eax
sub esi, edi
cmp dword [esp + 0x24], esi
jbe 0x503e65
mov esi, dword [esp + 0x24]
push 1
push esi
push ebx
call fcn.0050461a
mov eax, dword [esp + 0xac]
or dword [esp + 0x24], 0xffffffff
test eax, eax
je 0x503e93
cmp dword [esp + 0x50], eax
jb 0x503e8b
and dword [esp + 0x24], 0
jmp 0x503e93
sub eax, dword [esp + 0x50]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x84]
or dword [esp + 0x40], 0xffffffff
test eax, eax
je 0x503eb8
cmp dword [esp + 0x48], eax
jb 0x503eb0
and dword [esp + 0x40], 0
jmp 0x503eb8
sub eax, dword [esp + 0x48]
mov dword [esp + 0x40], eax
cmp byte [esp + 0x1b], 0
mov esi, dword [ebx + 0x70]
lea eax, [ebx + 4]
jne 0x503f20
mov edi, esi
shr edi, 1
call fcn.004bca88
cmp eax, edi
jae 0x503ed9
add edi, esi
mov dword [ebx + 0x70], edi
jmp 0x503f3d
lea eax, [ebx + 4]
call fcn.004bca88
mov ecx, eax
push 3
xor edx, edx
lea eax, [esi + esi]
pop edi
div edi
cmp ecx, eax
jae 0x503efb
mov eax, esi
push edi
xor edx, edx
pop ecx
div ecx
jmp 0x503f38
lea eax, [ebx + 4]
call fcn.004bca88
mov ecx, eax
mov eax, esi
shl eax, 2
push 5
xor edx, edx
pop edi
div edi
cmp ecx, eax
mov eax, esi
jae 0x503f1c
shr eax, 2
jmp 0x503f38
push 5
jmp 0x503ef4
call fcn.004bca88
mov ecx, eax
push 5
xor edx, edx
mov eax, esi
pop edi
div edi
cmp ecx, eax
jae 0x503f3d
mov eax, esi
shr eax, 1
add eax, esi
mov dword [ebx + 0x70], eax
mov esi, dword [ebx + 0x70]
or eax, 0xffffffff
test esi, esi
je 0x503f64
lea edi, [ebx + 4]
mov eax, edi
call fcn.004bca88
cmp eax, esi
jb 0x503f59
xor eax, eax
jmp 0x503f64
mov eax, edi
call fcn.004bca88
sub esi, eax
mov eax, esi
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0x40]
cmp esi, edx
mov ecx, esi
jb 0x503f74
mov ecx, edx
cmp ecx, eax
jae 0x503f80
cmp esi, edx
mov eax, esi
jb 0x503f80
mov eax, edx
mov ecx, dword [0x8b684c]
cmp byte [ecx + 0x5e], 0
jne 0x503f93
push eax
push ebx
call fcn.00503fe1
or dword [esp + 0xc8], 0xffffffff
lea esi, [esp + 0x84]
call fcn.0048c850
mov ecx, dword [esp + 0xc0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret