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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x80]
cmp eax, dword [ecx + 8]
jbe 0x515be3
sub esp, 0x100
mov eax, dword [esp + 0x104]
mov dword [esp], eax
mov eax, dword [esp + 0x108]
mov dword [esp + 4], eax
call fcn.00515bf0
movzx eax, byte [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
test al, al
je 0x515b75
mov dword [esp + 0xf4], ebx
mov dword [esp + 0x40], ebp
mov dword [esp], ecx
mov dword [esp + 4], edx
call fcn.00515e30
mov eax, dword [esp + 8]
movzx ecx, byte [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
test cl, cl
je 0x515b75
mov ecx, eax
neg eax
test edx, edx
je 0x5150e4
cmp byte [ebx], 0x2c
jne 0x51514d
mov ecx, dword [esp + 0xf4]
mov dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x120], ecx
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x110]
mov dword [esp + 0x12c], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x128], eax
mov dword [esp + 0x134], 0x7fffffff
mov dword [esp + 0x130], 0xffffffff
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov dword [esp + 0x90], ecx
mov dword [esp + 0x3c], eax
mov dword [esp], ebx
mov dword [esp + 4], edx
call fcn.00515bf0
movzx eax, byte [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 8]
mov ebp, dword [esp + 0xc]
test al, al
je 0x515b11
mov dword [esp + 0x8c], ebp
mov dword [esp + 0xfc], ebx
test ecx, ecx
je 0x515198
cmp byte [edx], 0x2c
jne 0x5151ad
mov esi, dword [esp + 0x90]
add esi, 0xfffff1f0
xchg esi, ebx
neg ebx
xchg esi, ebx
jmp 0x5151de
mov dword [esp], edx
mov dword [esp + 4], ecx
call fcn.00515e30
mov esi, dword [esp + 8]
movzx eax, byte [esp + 0x14]
xchg esi, ebx
neg ebx
xchg esi, ebx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0xfc]
mov ebp, dword [esp + 0x8c]
test al, al
je 0x515b11
test ecx, ecx
jne 0x5151f5
mov ecx, 0xf
lea edx, [0x6d595d]
test ecx, ecx
jbe 0x515bd9
mov dword [esp + 0x90], esi
movzx ebx, byte [edx]
cmp bl, 0x2c
je 0x515275
cmp bl, 0x3b
je 0x515275
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x88], ecx
lea edi, [esp + 0xb8]
xor eax, eax
call fcn.0046457b
lea edi, [esp + 0xcc]
call fcn.0046457b
mov ecx, dword [esp + 0x88]
dec ecx
mov ebx, ecx
neg ecx
sar ecx, 0x1f
and ecx, 1
add ecx, edx
mov dword [esp], ecx
mov dword [esp + 4], ebx
call fcn.00516320
movzx ecx, byte [esp + 0x24]
mov byte [esp + 0x2b], cl
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
lea edi, [esp + 0xe0]
lea esi, [esp + 8]
call fcn.00464a5e
lea edi, [esp + 0xb8]
lea esi, [esp + 0xe0]
call fcn.00464a5e
movzx ecx, byte [esp + 0x2b]
test cl, cl
je 0x515aad
test edx, edx
je 0x515aad
cmp byte [ebx], 0x2c
jne 0x515aad
lea eax, [edx - 1]
mov ecx, eax
neg eax
sar eax, 0x1f
and eax, 1
add eax, ebx
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00516320
movzx eax, byte [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x88], ecx
lea edi, [esp + 0xe0]
lea esi, [esp + 8]
call fcn.00464a5e
lea edi, [esp + 0xcc]
lea esi, [esp + 0xe0]
call fcn.00464a5e
test al, al
je 0x515a49
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x515a49
mov eax, dword [esp + 0x114]
add eax, 0x1ad9c900
mov edx, dword [esp + 0x118]
adc edx, 0x7ffffffe
mov dword [esp + 4], edx
mov dword [esp], eax
mov byte [esp + 8], 0
call fcn.005128c0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x34], eax
mov ecx, eax
sar eax, 0x1f
mov dword [esp + 0x84], eax
mov edx, ecx
add ecx, 0xd116ebf
adc eax, 0x44
mov ebp, eax
shr eax, 1
mov esi, 0xa3d70a3e
mov edi, edx
mul esi
shr edx, 7
mov dword [esp + 0x80], edx
imul eax, edx, 0x190
sub ebp, eax
mov eax, ebp
mov ebx, 0xa3d70a
mul ebx
mov dword [esp + 0x7c], eax
mov ebx, ecx
shr ecx, 1
mov eax, ecx
mov ecx, edx
mul esi
shr edx, 7
mov dword [esp + 0x78], edx
imul eax, edx, 0x190
sub ebx, eax
lea eax, [ebp + ebp*2]
shl eax, 5
add eax, ebx
shr eax, 1
mov ebx, edx
mul esi
shr edx, 7
mov dword [esp + 0x74], edx
add ebx, 0
mov ebp, dword [esp + 0x7c]
add ebp, ebx
add edx, ebp
mov dword [esp + 0x4c], edx
mov eax, 0x190
mul edx
mov dword [esp + 0x70], edx
mov dword [esp + 0x6c], eax
mov eax, 0x23ab1
mov esi, dword [esp + 0x4c]
mul esi
mov dword [esp + 0x68], edx
mov dword [esp + 0x58], eax
mov esi, dword [esp + 0x78]
add esi, 0
mov esi, dword [esp + 0x80]
adc esi, 0
mov edx, dword [esp + 0x7c]
add edx, ebx
adc ecx, esi
mov edx, dword [esp + 0x74]
add edx, ebp
adc ecx, 0
mov dword [esp + 0x64], ecx
imul edx, ecx, 0x190
mov ebx, dword [esp + 0x70]
add edx, ebx
mov ebx, dword [esp + 0x6c]
sub edi, ebx
mov dword [esp + 0x80], edi
mov ebx, dword [esp + 0x84]
sbb ebx, edx
mov dword [esp + 0x84], ebx
add edi, 0xd116ebf
adc ebx, 0x44
mov dword [esp + 0xb4], ebx
shr ebx, 1
mov eax, ebx
mov ebp, 0xa3d70a3e
mul ebp
shr edx, 5
mov dword [esp + 0x7c], edx
imul eax, edx, 0x64
mov ecx, dword [esp + 0xb4]
sub ecx, eax
mov eax, ecx
mov esi, 0x28f5c28
mul esi
mov dword [esp + 0x78], edx
mov dword [esp + 0x74], eax
mov esi, edi
shr edi, 1
mov eax, ebp
mul edi
shr edx, 5
mov dword [esp + 0x70], edx
imul eax, edx, 0x64
sub esi, eax
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, esi
shr eax, 1
mov ecx, edx
mul ebp
shr edx, 5
add ecx, 0
mov ebp, dword [esp + 0x74]
mov esi, ebp
add ebp, ecx
mov edi, edx
add edx, ebp
mov dword [esp + 0x4c], edx
mov eax, 0x64
mul edx
mov dword [esp + 0x74], edx
mov dword [esp + 0x6c], eax
mov eax, 0x8eac
mov ebx, dword [esp + 0x4c]
mul ebx
mov dword [esp + 0xb0], edx
mov dword [esp + 0xac], eax
mov ebx, dword [esp + 0x70]
add ebx, 0
mov ebx, dword [esp + 0x7c]
adc ebx, 0
add esi, ecx
mov ecx, dword [esp + 0x78]
adc ecx, ebx
add edi, ebp
adc ecx, 0
mov dword [esp + 0xb4], ecx
imul ebx, ecx, 0x64
mov ebp, dword [esp + 0x74]
add ebx, ebp
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x6c]
sub ebp, esi
mov dword [esp + 0x80], ebp
mov esi, dword [esp + 0x84]
sbb esi, ebx
mov dword [esp + 0x84], esi
mov ebx, ebp
add ebp, 0xd116ebf
adc esi, 0x44
mov dword [esp + 0xa8], esi
shr ebp, 2
shl esi, 0x1e
or esi, ebp
mov dword [esp + 0x7c], esi
mov ebp, eax
mov eax, 0x5b5
mul esi
mov dword [esp + 0x78], edx
mov dword [esp + 0x74], eax
shl esi, 2
mov dword [esp + 0x70], esi
sub ebx, esi
mov dword [esp + 0x6c], ebx
add ebx, 0xd116ebf
mov eax, 0x16d
mul ebx
mov dword [esp + 0xa4], edx
mov dword [esp + 0xa0], eax
mov ebx, dword [esp + 0x58]
add ebx, ebp
mov dword [esp + 0x9c], ebx
mov edx, dword [esp + 0x74]
add edx, ebx
mov dword [esp + 0x98], edx
add eax, edx
mov dword [esp + 0x94], eax
mov eax, 0x15180
mov edx, dword [esp + 0x94]
mul edx
mov dword [esp + 0x94], edx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
mov edx, dword [esp + 0x118]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x114]
mov dword [esp], edx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x15180
call fcn.0045d830
mov eax, dword [esp + 0x38]
imul eax, eax, 0x15180
mov ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
add edx, ecx
mov dword [esp + 0x2c], edx
adc ebx, eax
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x64]
imul eax, eax, 0x23ab1
mov ecx, dword [esp + 0x68]
add eax, ecx
mov ecx, dword [esp + 0xb4]
imul ecx, ecx, 0x8eac
mov ebp, dword [esp + 0xb0]
add ecx, ebp
mov ebp, dword [esp + 0x58]
mov esi, dword [esp + 0xac]
add ebp, esi
adc ecx, eax
mov eax, dword [esp + 0xa8]
shr eax, 2
mov ebp, eax
shl eax, 2
mov esi, dword [esp + 0x7c]
shr esi, 0x1e
or esi, eax
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x70]
sub eax, edi
mov eax, dword [esp + 0x84]
sbb eax, esi
mov esi, dword [esp + 0x6c]
add esi, 0xd116ebf
adc eax, 0x44
imul ebp, ebp, 0x5b5
mov esi, dword [esp + 0x78]
add ebp, esi
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 0x9c]
add esi, edi
adc ebp, ecx
imul eax, eax, 0x16d
mov ecx, dword [esp + 0xa4]
add eax, ecx
mov ecx, dword [esp + 0xa0]
mov esi, dword [esp + 0x98]
add ecx, esi
adc eax, ebp
imul eax, eax, 0x15180
mov ecx, dword [esp + 0x94]
add eax, ecx
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x5c]
add ecx, 0xe5263700
mov dword [esp + 0x7c], ecx
adc eax, 0x80000001
mov dword [esp + 0x60], eax
nop
mov edi, dword [esp + 0x34]
mov dword [esp], edi
lea edi, [esp + 4]
lea esi, [esp + 0xb8]
call fcn.00464a5e
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
call fcn.00516af0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x88], eax
mov ecx, dword [esp + 0x34]
mov dword [esp], ecx
lea edi, [esp + 4]
lea esi, [esp + 0xcc]
call fcn.00464a5e
mov ecx, dword [esp + 0x90]
mov dword [esp + 0x18], ecx
call fcn.00516af0
mov eax, dword [esp + 0x88]
mov ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x1c]
mov ebx, edx
sar edx, 0x1f
cmp edx, eax
xchg ebp, ebx
setl bl
xchg ebp, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
cmp ebx, ecx
xchg edi, ebx
setb bl
xchg edi, ebx
and edi, esi
or ebp, edi
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x515812
mov esi, dword [esp + 0x90]
mov edi, dword [esp + 0x8c]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0xf4]
mov dword [esp + 0xf8], esi
mov esi, dword [esp + 0xfc]
mov dword [esp + 0xf4], esi
mov esi, dword [esp + 0x90]
jmp 0x515854
mov ecx, ebx
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x8c]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0xfc]
mov dword [esp + 0xf8], ebx
mov ebx, dword [esp + 0x88]
mov ebx, edx
mov edx, eax
mov eax, ebx
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x44], ebx
xchg ebp, eax
mov byte [esp + 0x2a], al
xchg ebp, eax
mov dword [esp + 0x48], edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], edi
mov ebp, dword [esp + 0x30]
cmp edx, ebp
xchg esi, ebx
setg bl
xchg esi, ebx
xchg edi, ebx
sete bl
xchg edi, ebx
mov edx, dword [esp + 0x2c]
cmp edx, ebx
setb bl
and ebx, edi
or esi, ebx
xchg esi, eax
test al, al
xchg esi, eax
jne 0x5159c4
cmp eax, ebp
setl bl
xchg ebp, ebx
sete bl
xchg ebp, ebx
cmp edx, ecx
setae dl
and edx, ebp
or edx, ebx
test dl, dl
je 0x515933
mov edx, dword [esp + 0x5c]
add ecx, edx
mov ebx, dword [esp + 0x80]
adc eax, ebx
add ecx, 0xe5263700
adc eax, 0x80000001
add edx, 0xe7076a80
adc ebx, 0x80000001
mov ebp, dword [esp + 0xf4]
mov dword [esp + 0x11c], ebp
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x120], ebp
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x124], ebp
mov dword [esp + 0x12c], eax
mov dword [esp + 0x128], ecx
mov dword [esp + 0x134], ebx
mov dword [esp + 0x130], edx
movzx eax, byte [esp + 0x2a]
mov byte [esp + 0x138], al
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x44]
add ebx, edx
mov ebp, dword [esp + 0x80]
mov esi, dword [esp + 0x48]
adc esi, ebp
add ebx, 0xe5263700
adc esi, 0x80000001
add edx, ecx
adc ebp, eax
add edx, 0xe5263700
adc ebp, 0x80000001
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x11c], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x120], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x124], eax
mov dword [esp + 0x12c], esi
mov dword [esp + 0x128], ebx
mov dword [esp + 0x134], ebp
mov dword [esp + 0x130], edx
movzx eax, byte [esp + 0x2a]
xor eax, 1
mov byte [esp + 0x138], al
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x44]
add eax, ecx
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x48]
adc ecx, edx
add eax, 0xe5263700
adc ecx, 0x80000001
mov edx, dword [esp + 0xf4]
mov dword [esp + 0x11c], edx
mov edx, dword [esp + 0x40]
mov dword [esp + 0x120], edx
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x124], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x12c], edx
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x128], edx
mov dword [esp + 0x134], ecx
mov dword [esp + 0x130], eax
movzx eax, byte [esp + 0x2a]
mov byte [esp + 0x138], al
mov byte [esp + 0x139], 1
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
mov dword [esp + 0x11c], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x12c], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0x134], 0
mov dword [esp + 0x130], 0
mov byte [esp + 0x138], 0
mov byte [esp + 0x139], 0
add esp, 0x100
ret
xor eax, eax
mov ecx, eax
call fcn.00464360
nop
call fcn.00462ed0
jmp fcn.00515050