Function at 0x509710
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 0x5097b9
push 0x520454
push str.Parameter__s_is_invalid
call fcn.0041ad60
add esp, 8
jmp 0x50ad0c
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 0x50ad0c
mov eax, dword [esp + 0x40]
test byte [eax], 2
je 0x50982b
push eax
call fcn.0045ac30
add esp, 4
test eax, eax
jns 0x509820
or eax, 0xffffffff
jmp 0x50ad0c
mov dword [esp + 0xd8], 1
mov edi, dword [esp + 0x20]
test byte [edi], 2
je 0x50985d
push edi
call fcn.0045ac30
add esp, 4
test eax, eax
jns 0x509852
mov edx, dword [esp + 0x40]
mov dword [esp + 0x6c], 0xffffffff
jmp 0x50ace2
mov dword [esp + 0xdc], 1
mov ecx, dword [esp + 0x170]
mov eax, dword [esp + 0x16c]
mov edx, dword [esp + 0x174]
cmp al, cl
jne 0x5098bc
cmp ah, ch
jne 0x5098bc
mov al, byte [esp + 0x172]
cmp byte [esp + 0x16e], al
jne 0x5098bc
mov ah, byte [esp + 0x173]
cmp byte [esp + 0x16f], ah
jne 0x5098bc
cmp cl, dl
jne 0x5098bc
cmp ch, dh
jne 0x5098bc
cmp al, byte [esp + 0x176]
jne 0x5098bc
mov dword [esp + 0x10], 1
cmp ah, byte [esp + 0x177]
je 0x5098c4
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.0050caa0
lea eax, [esp + 0xf0]
push eax
push edi
call fcn.0045aaa0
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 0x509908
mov dword [esp + 0x1c], ebx
jmp 0x509913
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 0x509922
mov ecx, ebx
jmp 0x509927
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 0x509949
mov dword [esp + 0x18], edx
jmp 0x509954
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 0x509966
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 0x50999d
cmp ebx, ecx
jne 0x509983
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 0x509990
dec eax
mov dword [ebx], eax
mov eax, dword [ebp]
cmp eax, ecx
jne 0x5099a1
dec eax
mov dword [ebp], eax
jmp 0x5099a1
mov ebx, dword [esp + 0x68]
test edi, edi
jle 0x5099ca
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 4]
cmp eax, edx
jne 0x5099b4
dec eax
mov dword [ecx + 4], eax
mov eax, dword [ebx + 4]
cmp eax, edx
jne 0x5099bf
dec eax
mov dword [ebx + 4], eax
mov eax, dword [ebp + 4]
cmp eax, edx
jne 0x5099ca
dec eax
mov dword [ebp + 4], eax
cmp dword [esp + 0x10], 0
je 0x5099fa
mov eax, dword [esp + 0x16c]
cmp al, 0xff
jne 0x5099fa
cmp ah, al
jne 0x5099fa
cmp byte [esp + 0x16e], al
jne 0x5099fa
mov dword [esp + 0x28], 0
cmp byte [esp + 0x16f], al
je 0x509a02
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.0044ed40
lea eax, [esp + 0x140]
push eax
push esi
call fcn.0045aa00
lea eax, [esp + 0x138]
push eax
lea eax, [esp + 0x14c]
push eax
lea eax, [esp + 0x140]
push eax
call fcn.0044ed40
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 0x509ae4
jg 0x509ada
mov edx, dword [esp + 0x38]
test edx, edx
je 0x509ae8
mov dword [esp + 0x70], 1
jmp 0x509b0c
mov edx, dword [esp + 0x38]
xor eax, eax
mov dword [esp + 0x70], eax
test ecx, ecx
jg 0x509b0c
jl 0x509af8
test edx, edx
jae 0x509b0c
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 0x509ce4
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.0050cb10
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.0050cb10
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.0050cb10
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.0050cf60
mov dword [esp + 0x54], eax
cmp edx, 0xffffffff
jl 0x50acc9
jg 0x509d6b
cmp eax, 0x80000000
jb 0x50acc9
test edx, edx
jg 0x50acc9
jl 0x509d80
cmp eax, 0x7fffffff
ja 0x50acc9
mov eax, dword [esp + 0x74]
push ebx
push dword [esp + 0x3c]
cdq
push edx
push eax
call fcn.0050cf60
mov dword [esp + 0x60], eax
cmp edx, 0xffffffff
jl 0x50acc9
jg 0x509dab
cmp eax, 0x80000000
jb 0x50acc9
test edx, edx
jg 0x50acc9
jl 0x509dc0
cmp eax, 0x7fffffff
ja 0x50acc9
cmp dword [esp + 0xe0], 0
jne 0x50a9dd
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 0x50a9dd
cmp dword [esp + 0x28], 0
jne 0x50a9dd
cmp dword [esp + 0x10], 0
je 0x50a9dd
mov eax, dword [esp + 0xb8]
cmp eax, 4
jne 0x50a0eb
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x4c], 0
test ecx, ecx
jle 0x50acde
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 0x50a074
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 0x509ffc
jg 0x509f0f
test ecx, ecx
jb 0x509ffc
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x509ffc
jg 0x509f2a
test eax, eax
jb 0x509ffc
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x1c]
test edx, edx
jl 0x509ffc
jg 0x509f49
test eax, eax
jb 0x509ffc
mov eax, dword [esp + 0xc4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf60
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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.0050cf60
push dword [esp + 0x28]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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 0x509ef5
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 0x509e63
jmp 0x50acda
cmp eax, 3
jne 0x50a3f7
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x5c], 0
test ecx, ecx
jle 0x50acde
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 0x50a383
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 0x50a312
jg 0x50a214
test ecx, ecx
jb 0x50a312
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a312
jg 0x50a22f
test eax, eax
jb 0x50a312
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x28]
test edx, edx
jl 0x50a312
jg 0x50a24e
test eax, eax
jb 0x50a312
mov eax, dword [esp + 0xc8]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf60
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd0]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
push dword [esp + 0x1c]
mov ebx, eax
mov eax, dword [esp + 0xc8]
push dword [esp + 0x14]
cdq
push edx
push eax
call fcn.0050cf60
push dword [esp + 0x18]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd8]
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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 0x50a1f0
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 0x50a150
jmp 0x50acda
cmp eax, 2
jne 0x50a6e8
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x5c], 0
test ecx, ecx
jle 0x50acde
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 0x50a674
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 0x50a5fc
jg 0x50a50d
test ecx, ecx
jb 0x50a5fc
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a5fc
jg 0x50a528
test eax, eax
jb 0x50a5fc
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x28]
test edx, edx
jl 0x50a5fc
jg 0x50a547
test eax, eax
jb 0x50a5fc
mov eax, dword [esp + 0xc4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf60
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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.0050cf60
push dword [esp + 0x18]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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 0x50a4f0
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 0x50a454
jmp 0x50acda
cmp eax, 1
jne 0x50acde
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x5c], 0
test ecx, ecx
jle 0x50acde
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 0x50a969
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 0x50a8f1
jg 0x50a804
test eax, eax
jb 0x50a8f1
mov eax, dword [esp + 0x70]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a8f1
jg 0x50a81f
test eax, eax
jb 0x50a8f1
mov eax, dword [esp + 0x64]
cdq
add eax, dword [esp + 0x3c]
adc edx, dword [esp + 0x28]
test edx, edx
jl 0x50a8f1
jg 0x50a83e
test eax, eax
jb 0x50a8f1
mov eax, dword [esp + 0xc4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf60
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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.0050cf60
push dword [esp + 0x18]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd4]
cdq
push ebp
push edx
push eax
call fcn.0050cf60
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.0050cfd0
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 0x50a7e5
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 0x50a750
jmp 0x50acda
mov esi, dword [esp + 0x20]
lea eax, [esp + 0xe4]
push 0x40
push 0
push eax
mov ebx, dword [esi + 0x34]
call fcn.004587c0
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 0x50aa8f
cmp cl, al
jne 0x50aa8f
cmp dl, al
jne 0x50aa8f
cmp ah, al
jne 0x50aa8f
cmp ch, al
jne 0x50aa8f
cmp dh, al
jne 0x50aa8f
cmp byte [esp + 0x16e], al
jne 0x50aa8f
cmp byte [esp + 0x172], al
jne 0x50aa8f
cmp byte [esp + 0x176], al
je 0x50aa99
or esi, 1
mov dword [esp + 0x118], esi
cmp byte [esp + 0x16f], 0xff
jne 0x50aab7
cmp byte [esp + 0x173], 0xff
jne 0x50aab7
cmp byte [esp + 0x177], 0xff
je 0x50aac1
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 0x50acb0
mov esi, dword [esp + 0x38]
jg 0x50ab1f
cmp esi, 0x80000000
jb 0x50acb0
test ebx, ebx
jg 0x50acb0
jl 0x50ab35
cmp esi, 0x7fffffff
ja 0x50acb0
mov ebx, dword [esp + 0x44]
cmp ebx, 0xffffffff
jl 0x50ac97
jg 0x50ab52
cmp dword [esp + 0x34], 0x80000000
jb 0x50ac97
test ebx, ebx
jg 0x50ac97
jl 0x50ab6a
cmp dword [esp + 0x34], 0x7fffffff
ja 0x50ac97
mov ebx, dword [esp + 0x48]
cmp ebx, 0xffffffff
jl 0x50ac7e
jg 0x50ab87
cmp dword [esp + 0x30], 0x80000000
jb 0x50ac7e
test ebx, ebx
jg 0x50ac7e
jl 0x50ab9f
cmp dword [esp + 0x30], 0x7fffffff
ja 0x50ac7e
mov ebx, dword [esp + 0x14]
cmp ebx, 0xffffffff
jl 0x50ac65
jg 0x50abbc
cmp dword [esp + 0x2c], 0x80000000
jb 0x50ac65
test ebx, ebx
jg 0x50ac65
jl 0x50abd4
cmp dword [esp + 0x2c], 0x7fffffff
ja 0x50ac65
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.00508800
add esp, 0x70
jmp 0x50acda
push ebx
push dword [esp + 0x30]
push str.w2_row
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50acd6
push ebx
push dword [esp + 0x34]
push str.w1_row
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50acd6
push ebx
push dword [esp + 0x38]
push str.w0_row
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50acd6
push ebx
push dword [esp + 0x3c]
push str.area
push str.integer_overflow___s___I64d_
call fcn.0041ad60
add esp, 0x10
jmp 0x50acd6
push 0x558010
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 0x50acf5
push edx
call fcn.0045be30
add esp, 4
cmp dword [esp + 0xdc], 0
je 0x50ad08
push edi
call fcn.0045be30
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