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

Disassembly:
sub esp, 0x138
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x134], eax
mov eax, dword [esp + 0x140]
mov ecx, dword [esp + 0x154]
mov edx, dword [esp + 0x158]
push ebx
mov ebx, dword [esp + 0x148]
push ebp
mov ebp, dword [esp + 0x150]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x154]
push esi
mov esi, dword [esp + 0x148]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x15c]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x64], ebx
mov dword [esp + 0x48], ebp
mov dword [esp + 0x5c], eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x60], edx
mov dword [esp + 0x68], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
push edi
test esi, esi
jne 0x5098b9
push 0x520454
push str.Parameter__s_is_invalid
call fcn.0041ad60
add esp, 8
jmp 0x50ae0c
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov eax, dword [ecx]
mov ecx, dword [edx + 4]
sub eax, edi
sub ecx, esi
imul ecx
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x50], edx
mov eax, dword [eax + 4]
sub eax, esi
mov esi, dword [esp + 0x64]
mov ecx, dword [esi]
sub ecx, edi
mov edi, dword [esp + 0x38]
imul ecx
mov ecx, dword [esp + 0x50]
sub edi, eax
mov eax, edi
mov dword [esp + 0x38], edi
sbb ecx, edx
or eax, ecx
mov dword [esp + 0x50], ecx
je 0x50ae0c
mov eax, dword [esp + 0x40]
test byte [eax], 2
je 0x50992b
push eax
call fcn.0045ad30
add esp, 4
test eax, eax
jns 0x509920
or eax, 0xffffffff
jmp 0x50ae0c
mov dword [esp + 0xd8], 1
mov edi, dword [esp + 0x20]
test byte [edi], 2
je 0x50995d
push edi
call fcn.0045ad30
add esp, 4
test eax, eax
jns 0x509952
mov edx, dword [esp + 0x40]
mov dword [esp + 0x6c], 0xffffffff
jmp 0x50ade2
mov dword [esp + 0xdc], 1
mov ecx, dword [esp + 0x170]
mov eax, dword [esp + 0x16c]
mov edx, dword [esp + 0x174]
cmp al, cl
jne 0x5099bc
cmp ah, ch
jne 0x5099bc
mov al, byte [esp + 0x172]
cmp byte [esp + 0x16e], al
jne 0x5099bc
mov ah, byte [esp + 0x173]
cmp byte [esp + 0x16f], ah
jne 0x5099bc
cmp cl, dl
jne 0x5099bc
cmp ch, dh
jne 0x5099bc
cmp al, byte [esp + 0x176]
jne 0x5099bc
mov dword [esp + 0x10], 1
cmp ah, byte [esp + 0x177]
je 0x5099c4
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x60]
lea eax, [esp + 0x124]
push eax
push esi
push dword [esp + 0x5c]
push ecx
call fcn.0050cba0
lea eax, [esp + 0xf0]
push eax
push edi
call fcn.0045aba0
mov edx, dword [ebx]
add esp, 0x18
mov ecx, dword [ebp]
mov eax, edx
mov esi, dword [esp + 0x14]
cmp edx, ecx
cmovge eax, ecx
mov ebx, dword [esi]
cmp ebx, eax
jge 0x509a08
mov dword [esp + 0x1c], ebx
jmp 0x509a13
cmp edx, ecx
mov esi, ecx
cmovl esi, edx
mov dword [esp + 0x1c], esi
cmp edx, ecx
mov eax, edx
cmovle eax, ecx
cmp ebx, eax
jle 0x509a22
mov ecx, ebx
jmp 0x509a27
cmp edx, ecx
cmovg ecx, edx
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x14]
mov esi, dword [ebp + 4]
mov edi, dword [edi + 4]
cmp edi, esi
mov edx, dword [eax + 4]
mov eax, edi
cmovge eax, esi
cmp edx, eax
jge 0x509a49
mov dword [esp + 0x18], edx
jmp 0x509a54
cmp edi, esi
mov eax, esi
cmovl eax, edi
mov dword [esp + 0x18], eax
cmp edi, esi
mov eax, edi
cmovle eax, esi
cmp edx, eax
jg 0x509a66
cmp edi, esi
mov edx, esi
cmovg edx, edi
mov eax, ecx
mov edi, edx
sub eax, dword [esp + 0x1c]
sub edi, dword [esp + 0x18]
test eax, eax
jle 0x509a9d
cmp ebx, ecx
jne 0x509a83
mov esi, dword [esp + 0x14]
lea eax, [ebx - 1]
mov dword [esi], eax
mov ebx, dword [esp + 0x68]
mov eax, dword [ebx]
cmp eax, ecx
jne 0x509a90
dec eax
mov dword [ebx], eax
mov eax, dword [ebp]
cmp eax, ecx
jne 0x509aa1
dec eax
mov dword [ebp], eax
jmp 0x509aa1
mov ebx, dword [esp + 0x68]
test edi, edi
jle 0x509aca
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 4]
cmp eax, edx
jne 0x509ab4
dec eax
mov dword [ecx + 4], eax
mov eax, dword [ebx + 4]
cmp eax, edx
jne 0x509abf
dec eax
mov dword [ebx + 4], eax
mov eax, dword [ebp + 4]
cmp eax, edx
jne 0x509aca
dec eax
mov dword [ebp + 4], eax
cmp dword [esp + 0x10], 0
je 0x509afa
mov eax, dword [esp + 0x16c]
cmp al, 0xff
jne 0x509afa
cmp ah, al
jne 0x509afa
cmp byte [esp + 0x16e], al
jne 0x509afa
mov dword [esp + 0x28], 0
cmp byte [esp + 0x16f], al
je 0x509b02
mov dword [esp + 0x28], 1
mov esi, dword [esp + 0x40]
mov dword [esp + 0x134], 0
mov dword [esp + 0x138], 0
mov eax, dword [esi + 8]
mov dword [esp + 0x13c], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x140], eax
lea eax, [esp + 0x124]
push eax
lea eax, [esp + 0x138]
push eax
lea eax, [esp + 0x12c]
push eax
call fcn.0044ed80
lea eax, [esp + 0x140]
push eax
push esi
call fcn.0045ab00
lea eax, [esp + 0x138]
push eax
lea eax, [esp + 0x14c]
push eax
lea eax, [esp + 0x140]
push eax
call fcn.0044ed80
mov eax, dword [esi + 4]
add esp, 0x20
movzx ecx, byte [eax + 9]
mov eax, dword [esi + 0x10]
mov ebp, eax
imul ebp, dword [esp + 0x128]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x124]
imul eax, ecx
mov dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0x20]
add ebp, eax
mov eax, dword [ecx + 0x14]
add ebp, dword [esi + 0x14]
mov dword [esp + 0xbc], eax
mov eax, dword [ecx + 0x10]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x58], ebp
mov dword [esp + 0xc0], eax
test ecx, ecx
jl 0x509be4
jg 0x509bda
mov edx, dword [esp + 0x38]
test edx, edx
je 0x509be8
mov dword [esp + 0x70], 1
jmp 0x509c0c
mov edx, dword [esp + 0x38]
xor eax, eax
mov dword [esp + 0x70], eax
test ecx, ecx
jg 0x509c0c
jl 0x509bf8
test edx, edx
jae 0x509c0c
neg edx
mov dword [esp + 0x38], edx
adc ecx, eax
neg ecx
xor eax, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x70], eax
mov edi, dword [esp + 0x54]
mov ebp, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
mov eax, dword [edi + 4]
mov esi, dword [ebp + 4]
sub eax, esi
mov ecx, dword [edi]
add eax, eax
mov ebp, dword [ebp]
mov ebx, esi
mov dword [esp + 0x80], eax
mov eax, dword [edx + 4]
sub ebx, eax
sub eax, dword [edi + 4]
add ebx, ebx
add eax, eax
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], eax
mov edi, ebp
sub edi, ecx
lea eax, [edi + edi]
mov dword [esp + 0x18], eax
mov eax, dword [edx]
sub eax, ebp
mov dword [esp + 0x5c], eax
add eax, eax
mov dword [esp + 0x1c], eax
mov eax, ecx
sub eax, dword [edx]
mov dword [esp + 0x3c], eax
add eax, eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
mov edx, dword [eax]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x14]
mov ebx, dword [edx]
sub ebx, dword [eax]
mov dword [esp + 0xd0], ebx
mov ebx, dword [esp + 0x68]
mov edx, dword [ebx]
sub edx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0xc8], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x74], eax
mov edx, dword [edx + 4]
sub edx, eax
mov dword [esp + 0xd4], edx
mov edx, dword [ebx + 4]
sub edx, eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0xc4], edx
mov edx, dword [esp + 0x54]
lea ebx, [eax*2 + 1]
mov eax, ebx
sub eax, ecx
mov ecx, esi
sub ecx, dword [edx + 4]
imul ecx
mov esi, edx
mov ecx, eax
mov edx, dword [esp + 0x128]
lea eax, [edx*2 + 1]
mov edx, dword [esp + 0x54]
sub eax, dword [edx + 4]
imul edi
sub eax, ecx
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x34], eax
mov eax, ebx
sbb edx, esi
sub eax, ebp
mov esi, dword [esp + 0x64]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x44], edx
mov edi, dword [esi + 4]
sub ecx, edi
imul ecx
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x128]
lea ebp, [eax*2 + 1]
mov eax, ebp
sub eax, edi
imul dword [esp + 0x5c]
sub eax, ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x60]
sbb edx, esi
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x54]
sub ebx, dword [eax]
mov edi, dword [eax + 4]
mov eax, ebx
mov ecx, dword [edx + 4]
sub ebp, edi
mov ebx, dword [esp + 0x70]
sub ecx, edi
mov edi, dword [esp + 0x1c]
imul ecx
mov ecx, eax
mov esi, edx
mov eax, ebp
mov ebp, dword [esp + 0x18]
imul dword [esp + 0x3c]
sub eax, ecx
mov dword [esp + 0x2c], eax
sbb edx, esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x14], edx
test ebx, ebx
jne 0x509de4
mov eax, dword [esp + 0x80]
neg esi
neg eax
mov dword [esp + 0x24], esi
mov dword [esp + 0x80], eax
neg ebp
mov eax, dword [esp + 0x7c]
neg edi
neg eax
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x78]
neg eax
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x34]
neg eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x44]
adc eax, ebx
neg eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
neg eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x48]
adc eax, ebx
neg eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
neg eax
mov dword [esp + 0x2c], eax
adc edx, ebx
neg edx
mov dword [esp + 0x14], edx
push ebx
push dword [esp + 0x68]
push dword [esp + 0x5c]
call fcn.0050cc10
mov ecx, dword [esp + 0x6c]
neg eax
push ebx
sbb eax, eax
neg eax
push ecx
push dword [esp + 0x78]
dec eax
mov dword [esp + 0x80], eax
call fcn.0050cc10
neg eax
push ebx
push dword [esp + 0x70]
sbb eax, eax
push dword [esp + 0x80]
neg eax
dec eax
mov dword [esp + 0x94], eax
call fcn.0050cc10
mov ebx, dword [esp + 0x74]
add esp, 0x24
neg eax
sbb eax, eax
neg eax
dec eax
push ebx
push dword [esp + 0x3c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x54]
cdq
push edx
push eax
call fcn.0050d060
mov dword [esp + 0x54], eax
cmp edx, 0xffffffff
jl 0x50adc9
jg 0x509e6b
cmp eax, 0x80000000
jb 0x50adc9
test edx, edx
jg 0x50adc9
jl 0x509e80
cmp eax, 0x7fffffff
ja 0x50adc9
mov eax, dword [esp + 0x74]
push ebx
push dword [esp + 0x3c]
cdq
push edx
push eax
call fcn.0050d060
mov dword [esp + 0x60], eax
cmp edx, 0xffffffff
jl 0x50adc9
jg 0x509eab
cmp eax, 0x80000000
jb 0x50adc9
test edx, edx
jg 0x50adc9
jl 0x509ec0
cmp eax, 0x7fffffff
ja 0x50adc9
cmp dword [esp + 0xe0], 0
jne 0x50aadd
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov eax, dword [eax + 4]
mov ecx, dword [edx + 4]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x50aadd
cmp dword [esp + 0x28], 0
jne 0x50aadd
cmp dword [esp + 0x10], 0
je 0x50aadd
mov eax, dword [esp + 0xb8]
cmp eax, 4
jne 0x50a1eb
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x4c], 0
test ecx, ecx
jle 0x50adde
mov ebx, dword [esp + 0x44]
mov eax, ebp
cdq
mov dword [esp + 0xb4], eax
mov eax, edi
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0x88], eax
mov eax, esi
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x94], edx
xor edx, edx
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x5c], 0
test eax, eax
jle 0x50a174
mov eax, dword [esp + 0x68]
cdq
mov ecx, eax
mov dword [esp + 0x74], edx
mov eax, dword [esp + 0x80]
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xac], edx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x74]
add ecx, ebp
adc eax, ebx
test eax, eax
jl 0x50a0fc
jg 0x50a00f
test ecx, ecx
jb 0x50a0fc
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a0fc
jg 0x50a02a
test eax, eax
jb 0x50a0fc
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x1c]
test edx, edx
jl 0x50a0fc
jg 0x50a049
test eax, eax
jb 0x50a0fc
mov eax, dword [esp + 0xc4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050d060
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x64]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
push dword [esp + 0x24]
mov ebx, eax
mov eax, dword [esp + 0xcc]
push dword [esp + 0x14]
imul ebx, dword [esp + 0xc8]
cdq
push edx
push eax
call fcn.0050d060
push dword [esp + 0x28]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x58]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
add ebx, dword [esp + 0xbc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x18]
mov dword [ebx], eax
mov ebx, dword [esp + 0x28]
add ebp, dword [esp + 0x98]
mov eax, dword [esp + 0xa8]
adc ebx, dword [esp + 0x9c]
add esi, dword [esp + 0xa0]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0xa4]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0xac]
adc dword [esp + 0x1c], eax
mov eax, dword [esp + 0x5c]
add dword [esp + 0x18], ecx
inc eax
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x24], edi
mov dword [esp + 0x5c], eax
cmp eax, dword [esp + 0x12c]
jl 0x509ff5
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x34]
add ebx, dword [esp + 0xb4]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x44]
adc ebx, dword [esp + 0x84]
add ebp, dword [esp + 0x88]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x48]
adc ebp, dword [esp + 0x8c]
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x2c]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x94]
inc edx
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xcc]
add dword [esp + 0x58], ebp
mov dword [esp + 0x44], ebx
mov dword [esp + 0x4c], edx
cmp edx, ecx
jl 0x509f63
jmp 0x50adda
cmp eax, 3
jne 0x50a4f7
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x5c], 0
test ecx, ecx
jle 0x50adde
mov ebx, dword [esp + 0x44]
mov eax, ebp
cdq
mov dword [esp + 0xa8], eax
mov eax, edi
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, esi
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x74], edx
xor edx, edx
nop dword [eax + eax]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], 0
test eax, eax
jle 0x50a483
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x58]
cdq
add ecx, 2
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xb0], eax
mov dword [esp + 0xac], edx
mov dword [esp + 0x24], ecx
nop word [eax + eax]
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x90]
add ecx, ebp
adc eax, ebx
test eax, eax
jl 0x50a412
jg 0x50a314
test ecx, ecx
jb 0x50a412
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a412
jg 0x50a32f
test eax, eax
jb 0x50a412
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x28]
test edx, edx
jl 0x50a412
jg 0x50a34e
test eax, eax
jb 0x50a412
mov eax, dword [esp + 0xc8]
push edi
cdq
push esi
push edx
push eax
call fcn.0050d060
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd0]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x58]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
push dword [esp + 0x1c]
mov ebx, eax
mov eax, dword [esp + 0xc8]
push dword [esp + 0x14]
cdq
push edx
push eax
call fcn.0050d060
push dword [esp + 0x18]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd8]
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x64]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
imul eax, dword [esp + 0xc0]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
add eax, dword [esp + 0xbc]
lea ecx, [eax + ebx*2]
mov al, byte [ecx + ebx]
add ecx, ebx
mov ebx, dword [esp + 0x24]
mov byte [ebx - 2], al
mov al, byte [ecx + 1]
mov byte [ebx - 1], al
mov al, byte [ecx + 2]
mov byte [ebx], al
mov ebx, dword [esp + 0x18]
add ebp, dword [esp + 0x8c]
mov eax, dword [esp + 0xb0]
adc ebx, dword [esp + 0x88]
add esi, dword [esp + 0x84]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0xb4]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0xac]
adc dword [esp + 0x28], eax
mov eax, dword [esp + 0x4c]
add dword [esp + 0x24], ecx
inc eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a2f0
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x34]
add ebx, dword [esp + 0xa8]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x44]
adc ebx, dword [esp + 0xa4]
add ebp, dword [esp + 0xa0]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x48]
adc ebp, dword [esp + 0x9c]
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x2c]
add ebp, dword [esp + 0x98]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x74]
inc edx
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xcc]
add dword [esp + 0x58], ebp
mov dword [esp + 0x44], ebx
mov dword [esp + 0x5c], edx
cmp edx, ecx
jl 0x50a250
jmp 0x50adda
cmp eax, 2
jne 0x50a7e8
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x5c], 0
test ecx, ecx
jle 0x50adde
mov ebx, dword [esp + 0x44]
mov eax, ebp
cdq
mov dword [esp + 0xa8], eax
mov eax, edi
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, esi
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x74], edx
xor edx, edx
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], 0
test eax, eax
jle 0x50a774
mov eax, dword [esp + 0x68]
cdq
mov ecx, eax
mov dword [esp + 0x94], edx
mov eax, dword [esp + 0x80]
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x24], eax
nop dword [eax]
mov eax, dword [esp + 0x94]
add ecx, ebp
adc eax, ebx
test eax, eax
jl 0x50a6fc
jg 0x50a60d
test ecx, ecx
jb 0x50a6fc
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a6fc
jg 0x50a628
test eax, eax
jb 0x50a6fc
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x28]
test edx, edx
jl 0x50a6fc
jg 0x50a647
test eax, eax
jb 0x50a6fc
mov eax, dword [esp + 0xc4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050d060
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x64]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
push dword [esp + 0x1c]
mov ebx, eax
mov eax, dword [esp + 0xcc]
push dword [esp + 0x14]
imul ebx, dword [esp + 0xc8]
cdq
push edx
push eax
call fcn.0050d060
push dword [esp + 0x18]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x58]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
add ebx, dword [esp + 0xbc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
mov ax, word [ebx + eax*2]
mov ebx, dword [esp + 0x24]
mov word [ebx], ax
mov ebx, dword [esp + 0x18]
add ebp, dword [esp + 0x90]
mov eax, dword [esp + 0xb4]
adc ebx, dword [esp + 0x8c]
add esi, dword [esp + 0x88]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0x84]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0xb0]
adc dword [esp + 0x28], eax
mov eax, dword [esp + 0x4c]
add dword [esp + 0x24], ecx
inc eax
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a5f0
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x34]
add ebx, dword [esp + 0xa8]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x44]
adc ebx, dword [esp + 0xa4]
add ebp, dword [esp + 0xa0]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x48]
adc ebp, dword [esp + 0x9c]
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x2c]
add ebp, dword [esp + 0x98]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x74]
inc edx
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xcc]
add dword [esp + 0x58], ebp
mov dword [esp + 0x44], ebx
mov dword [esp + 0x5c], edx
cmp edx, ecx
jl 0x50a554
jmp 0x50adda
cmp eax, 1
jne 0x50adde
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x5c], 0
test ecx, ecx
jle 0x50adde
mov ebx, dword [esp + 0x44]
mov eax, ebp
cdq
mov dword [esp + 0xa8], eax
mov eax, edi
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, esi
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x74], edx
xor edx, edx
nop word [eax + eax]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x2c]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], 0
test eax, eax
jle 0x50aa69
mov eax, dword [esp + 0x68]
cdq
mov ecx, eax
mov dword [esp + 0x94], edx
mov eax, dword [esp + 0x80]
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], edx
mov dword [esp + 0x24], eax
mov eax, ecx
mov ecx, dword [esp + 0x94]
add eax, ebp
adc ecx, ebx
test ecx, ecx
jl 0x50a9f1
jg 0x50a904
test eax, eax
jb 0x50a9f1
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a9f1
jg 0x50a91f
test eax, eax
jb 0x50a9f1
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x28]
test edx, edx
jl 0x50a9f1
jg 0x50a93e
test eax, eax
jb 0x50a9f1
mov eax, dword [esp + 0xc4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050d060
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x64]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
push dword [esp + 0x1c]
mov ebx, eax
mov eax, dword [esp + 0xcc]
push dword [esp + 0x14]
imul ebx, dword [esp + 0xc8]
cdq
push edx
push eax
call fcn.0050d060
push dword [esp + 0x18]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
cdq
push ebp
push edx
push eax
call fcn.0050d060
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x58]
push dword [esp + 0x3c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d0d0
add ebx, dword [esp + 0xbc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
mov al, byte [eax + ebx]
mov ebx, dword [esp + 0x24]
mov byte [ebx], al
mov ebx, dword [esp + 0x18]
add ebp, dword [esp + 0x90]
mov eax, dword [esp + 0xb4]
adc ebx, dword [esp + 0x8c]
add esi, dword [esp + 0x88]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0x84]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0xb0]
adc dword [esp + 0x28], eax
mov eax, dword [esp + 0x4c]
add dword [esp + 0x24], ecx
inc eax
mov ecx, dword [esp + 0xac]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x4c], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a8e5
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x34]
add ebx, dword [esp + 0xa8]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x44]
adc ebx, dword [esp + 0xa4]
add ebp, dword [esp + 0xa0]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x48]
adc ebp, dword [esp + 0x9c]
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x2c]
add ebp, dword [esp + 0x98]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x74]
inc edx
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0xcc]
add dword [esp + 0x58], ebp
mov dword [esp + 0x44], ebx
mov dword [esp + 0x5c], edx
cmp edx, ecx
jl 0x50a850
jmp 0x50adda
mov esi, dword [esp + 0x20]
lea eax, [esp + 0xe4]
push 0x40
push 0
push eax
mov ebx, dword [esi + 0x34]
call fcn.004588c0
mov eax, dword [esi + 4]
add esp, 0xc
mov cl, byte [esp + 0x16e]
mov edx, dword [esp + 0x174]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax + 4]
mov dword [esp + 0x110], eax
mov esi, dword [ebx + 0x44]
mov eax, dword [esp + 0x16c]
and esi, 0xfffffffc
mov byte [esp + 0x122], cl
mov cl, byte [esp + 0x16f]
mov byte [esp + 0x123], cl
mov ecx, dword [esp + 0x170]
mov byte [esp + 0x120], al
mov byte [esp + 0x121], ah
mov dword [esp + 0x118], esi
cmp al, 0xff
jne 0x50ab8f
cmp cl, al
jne 0x50ab8f
cmp dl, al
jne 0x50ab8f
cmp ah, al
jne 0x50ab8f
cmp ch, al
jne 0x50ab8f
cmp dh, al
jne 0x50ab8f
cmp byte [esp + 0x16e], al
jne 0x50ab8f
cmp byte [esp + 0x172], al
jne 0x50ab8f
cmp byte [esp + 0x176], al
je 0x50ab99
or esi, 1
mov dword [esp + 0x118], esi
cmp byte [esp + 0x16f], 0xff
jne 0x50abb7
cmp byte [esp + 0x173], 0xff
jne 0x50abb7
cmp byte [esp + 0x177], 0xff
je 0x50abc1
or esi, 2
mov dword [esp + 0x118], esi
mov esi, dword [ebx + 0x48]
mov ebx, dword [esp + 0xcc]
mov dword [esp + 0x11c], esi
mov esi, dword [esp + 0xbc]
mov dword [esp + 0xe4], esi
mov esi, dword [esp + 0xc0]
mov dword [esp + 0x104], ebx
mov ebx, dword [esp + 0x50]
mov dword [esp + 0xf0], esi
mov esi, dword [esp + 0x58]
mov dword [esp + 0xf8], esi
cmp ebx, 0xffffffff
jl 0x50adb0
mov esi, dword [esp + 0x38]
jg 0x50ac1f
cmp esi, 0x80000000
jb 0x50adb0
test ebx, ebx
jg 0x50adb0
jl 0x50ac35
cmp esi, 0x7fffffff
ja 0x50adb0
mov ebx, dword [esp + 0x44]
cmp ebx, 0xffffffff
jl 0x50ad97
jg 0x50ac52
cmp dword [esp + 0x34], 0x80000000
jb 0x50ad97
test ebx, ebx
jg 0x50ad97
jl 0x50ac6a
cmp dword [esp + 0x34], 0x7fffffff
ja 0x50ad97
mov ebx, dword [esp + 0x48]
cmp ebx, 0xffffffff
jl 0x50ad7e
jg 0x50ac87
cmp dword [esp + 0x30], 0x80000000
jb 0x50ad7e
test ebx, ebx
jg 0x50ad7e
jl 0x50ac9f
cmp dword [esp + 0x30], 0x7fffffff
ja 0x50ad7e
mov ebx, dword [esp + 0x14]
cmp ebx, 0xffffffff
jl 0x50ad65
jg 0x50acbc
cmp dword [esp + 0x2c], 0x80000000
jb 0x50ad65
test ebx, ebx
jg 0x50ad65
jl 0x50acd4
cmp dword [esp + 0x2c], 0x7fffffff
ja 0x50ad65
push dword [esp + 0x10]
movups xmm0, xmmword [esp + 0x128]
push edx
push ecx
push eax
push dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
push dword [esp + 0x44]
push dword [esp + 0x4c]
push dword [esp + 0xe0]
push dword [esp + 0xf4]
push dword [esp + 0xec]
push dword [esp + 0xf8]
push eax
push dword [esp + 0xa8]
push edi
push dword [esp + 0xb4]
push ebp
push dword [esp + 0xc0]
push dword [esp + 0xa8]
push dword [esp + 0xb8]
push dword [esp + 0xb4]
push esi
sub esp, 0x10
mov eax, esp
push dword [esp + 0xc4]
movups xmmword [eax], xmm0
lea eax, [esp + 0x14c]
push dword [esp + 0xbc]
push eax
call fcn.00508900
add esp, 0x70
jmp 0x50adda
push ebx
push dword [esp + 0x30]
push str.w2_row
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50add6
push ebx
push dword [esp + 0x34]
push str.w1_row
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50add6
push ebx
push dword [esp + 0x38]
push str.w0_row
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50add6
push ebx
push dword [esp + 0x3c]
push str.area
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50add6
push 0x558160
call fcn.0041ad60
add esp, 4
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0x40]
mov edi, dword [esp + 0x20]
cmp dword [esp + 0xd8], 0
je 0x50adf5
push edx
call fcn.0045bf30
add esp, 4
cmp dword [esp + 0xdc], 0
je 0x50ae08
push edi
call fcn.0045bf30
add esp, 4
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00401033
add esp, 0x138
ret