Function at 0x5098b0
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 + 0x48], eax
mov eax, dword [esp + 0x15c]
mov dword [esp + 0x14], esi
mov dword [esp + 0x68], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x60], eax
mov dword [esp + 0x58], ecx
mov dword [esp + 0x64], edx
mov dword [esp + 0x6c], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
push edi
test esi, esi
jne 0x509959
push 0x51f554
push str.Parameter__s_is_invalid
call fcn.0041b670
add esp, 8
jmp 0x50aea2
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 + 0x28], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x50], edx
mov eax, dword [eax + 4]
sub eax, esi
mov esi, dword [esp + 0x68]
mov ecx, dword [esi]
sub ecx, edi
mov edi, dword [esp + 0x28]
imul ecx
mov ecx, dword [esp + 0x50]
sub edi, eax
mov eax, edi
mov dword [esp + 0x28], edi
sbb ecx, edx
or eax, ecx
mov dword [esp + 0x50], ecx
je 0x50aea2
mov eax, dword [esp + 0x4c]
test byte [eax], 2
je 0x5099cb
push eax
call fcn.0045b8d0
add esp, 4
test eax, eax
jns 0x5099c0
or eax, 0xffffffff
jmp 0x50aea2
mov dword [esp + 0xd8], 1
mov edi, dword [esp + 0x18]
test byte [edi], 2
je 0x5099fd
push edi
call fcn.0045b8d0
add esp, 4
test eax, eax
jns 0x5099f2
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x70], 0xffffffff
jmp 0x50ae78
mov dword [esp + 0xdc], 1
mov eax, dword [esp + 0x170]
cmp byte [esp + 0x16c], al
jne 0x509a69
mov cl, byte [esp + 0x171]
cmp byte [esp + 0x16d], cl
jne 0x509a69
mov dl, byte [esp + 0x172]
cmp byte [esp + 0x16e], dl
jne 0x509a69
mov ch, byte [esp + 0x173]
cmp byte [esp + 0x16f], ch
jne 0x509a69
cmp al, byte [esp + 0x174]
jne 0x509a69
cmp cl, byte [esp + 0x175]
jne 0x509a69
cmp dl, byte [esp + 0x176]
jne 0x509a69
mov dword [esp + 0x10], 1
cmp ch, byte [esp + 0x177]
je 0x509a71
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x64]
lea eax, [esp + 0x124]
push eax
push esi
push dword [esp + 0x64]
push ecx
call fcn.0050cb40
lea eax, [esp + 0xf0]
push eax
push edi
call fcn.0045b740
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 0x509ab5
mov dword [esp + 0x20], ebx
jmp 0x509ac0
cmp edx, ecx
mov esi, ecx
cmovl esi, edx
mov dword [esp + 0x20], esi
cmp edx, ecx
mov eax, edx
cmovle eax, ecx
cmp ebx, eax
jle 0x509acf
mov ecx, ebx
jmp 0x509ad4
cmp edx, ecx
cmovg ecx, edx
mov edi, dword [esp + 0x6c]
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 0x509af6
mov dword [esp + 0x1c], edx
jmp 0x509b01
cmp edi, esi
mov eax, esi
cmovl eax, edi
mov dword [esp + 0x1c], eax
cmp edi, esi
mov eax, edi
cmovle eax, esi
cmp edx, eax
jg 0x509b13
cmp edi, esi
mov edx, esi
cmovg edx, edi
mov eax, ecx
mov edi, edx
sub eax, dword [esp + 0x20]
sub edi, dword [esp + 0x1c]
test eax, eax
jle 0x509b4a
cmp ebx, ecx
jne 0x509b30
mov esi, dword [esp + 0x14]
lea eax, [ebx - 1]
mov dword [esi], eax
mov ebx, dword [esp + 0x6c]
mov eax, dword [ebx]
cmp eax, ecx
jne 0x509b3d
dec eax
mov dword [ebx], eax
mov eax, dword [ebp]
cmp eax, ecx
jne 0x509b4e
dec eax
mov dword [ebp], eax
jmp 0x509b4e
mov ebx, dword [esp + 0x6c]
test edi, edi
jle 0x509b77
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + 4]
cmp eax, edx
jne 0x509b61
dec eax
mov dword [ecx + 4], eax
mov eax, dword [ebx + 4]
cmp eax, edx
jne 0x509b6c
dec eax
mov dword [ebx + 4], eax
mov eax, dword [ebp + 4]
cmp eax, edx
jne 0x509b77
dec eax
mov dword [ebp + 4], eax
cmp dword [esp + 0x10], 0
je 0x509bae
cmp byte [esp + 0x16c], 0xff
jne 0x509bae
cmp byte [esp + 0x16d], 0xff
jne 0x509bae
cmp byte [esp + 0x16e], 0xff
jne 0x509bae
cmp byte [esp + 0x16f], 0xff
mov dword [esp + 0x24], 0
je 0x509bb6
mov dword [esp + 0x24], 1
mov esi, dword [esp + 0x4c]
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.0044f910
lea eax, [esp + 0x140]
push eax
push esi
call fcn.0045b6a0
lea eax, [esp + 0x138]
push eax
lea eax, [esp + 0x14c]
push eax
lea eax, [esp + 0x140]
push eax
call fcn.0044f910
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 + 0xd0], eax
mov eax, dword [esp + 0x124]
imul eax, ecx
mov dword [esp + 0xb8], ecx
mov ecx, dword [esp + 0x18]
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 + 0x54], ebp
mov dword [esp + 0xc0], eax
test ecx, ecx
jl 0x509c98
jg 0x509c8e
mov edx, dword [esp + 0x28]
test edx, edx
je 0x509c9c
mov dword [esp + 0x74], 1
jmp 0x509cc0
mov edx, dword [esp + 0x28]
xor eax, eax
mov dword [esp + 0x74], eax
test ecx, ecx
jg 0x509cc0
jl 0x509cac
test edx, edx
jae 0x509cc0
neg edx
mov dword [esp + 0x28], edx
adc ecx, eax
neg ecx
xor eax, eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x74], eax
mov edi, dword [esp + 0x5c]
mov ebp, dword [esp + 0x68]
mov edx, dword [esp + 0x64]
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 + 0x84], eax
mov eax, dword [edx + 4]
sub ebx, eax
sub eax, dword [edi + 4]
add ebx, ebx
add eax, eax
mov dword [esp + 0x80], ebx
mov dword [esp + 0x7c], eax
mov edi, ebp
sub edi, ecx
lea eax, [edi + edi]
mov dword [esp + 0x1c], eax
mov eax, dword [edx]
sub eax, ebp
mov dword [esp + 0x60], eax
add eax, eax
mov dword [esp + 0x20], eax
mov eax, ecx
sub eax, dword [edx]
mov dword [esp + 0x3c], eax
add eax, eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x58]
mov edx, dword [eax]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x14]
mov ebx, dword [edx]
sub ebx, dword [eax]
mov dword [esp + 0xc4], ebx
mov ebx, dword [esp + 0x6c]
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 + 0x78], eax
mov edx, dword [edx + 4]
sub edx, eax
mov dword [esp + 0xcc], edx
mov edx, dword [ebx + 4]
sub edx, eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0xd4], edx
mov edx, dword [esp + 0x5c]
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 + 0x5c]
sub eax, dword [edx + 4]
imul edi
sub eax, ecx
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x38], eax
mov eax, ebx
sbb edx, esi
sub eax, ebp
mov esi, dword [esp + 0x68]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x48], 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 + 0x60]
sub eax, ecx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x64]
sbb edx, esi
mov dword [esp + 0x44], edx
mov edx, dword [esp + 0x5c]
sub ebx, dword [eax]
mov edi, dword [eax + 4]
mov eax, ebx
mov ecx, dword [edx + 4]
sub ebp, edi
mov ebx, dword [esp + 0x1c]
sub ecx, edi
mov edi, dword [esp + 0x2c]
imul ecx
mov ecx, eax
mov esi, edx
mov eax, ebp
mov ebp, dword [esp + 0x20]
imul dword [esp + 0x3c]
sub eax, ecx
mov dword [esp + 0x30], eax
sbb edx, esi
mov esi, dword [esp + 0x74]
mov dword [esp + 0x14], edx
test esi, esi
jne 0x509e9d
mov eax, dword [esp + 0x84]
neg ebx
neg eax
neg ebp
mov dword [esp + 0x84], eax
neg edi
mov eax, dword [esp + 0x80]
neg eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x7c]
neg eax
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x38]
neg eax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x48]
adc eax, esi
neg eax
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x34]
neg eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x44]
adc eax, esi
neg eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
neg eax
mov dword [esp + 0x30], eax
adc edx, esi
neg edx
mov dword [esp + 0x14], edx
push esi
push dword [esp + 0x6c]
push dword [esp + 0x64]
call fcn.0050cbe0
mov ecx, dword [esp + 0x70]
neg eax
push esi
sbb eax, eax
neg eax
push ecx
push dword [esp + 0x7c]
dec eax
mov dword [esp + 0x84], eax
call fcn.0050cbe0
neg eax
push esi
push dword [esp + 0x78]
sbb eax, eax
push dword [esp + 0x84]
neg eax
dec eax
mov dword [esp + 0x98], eax
call fcn.0050cbe0
mov esi, dword [esp + 0x74]
add esp, 0x24
neg eax
sbb eax, eax
neg eax
dec eax
push esi
push dword [esp + 0x2c]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x60]
cdq
push edx
push eax
call fcn.0050cf40
mov ecx, eax
mov dword [esp + 0x5c], eax
add ecx, 0x80000000
adc edx, 0
test edx, edx
ja 0x50ae5b
jb 0x509f2c
cmp ecx, 0xffffffff
ja 0x50ae5b
mov eax, dword [esp + 0x78]
push esi
push dword [esp + 0x2c]
cdq
push edx
push eax
call fcn.0050cf40
mov ecx, eax
mov dword [esp + 0x64], eax
add ecx, 0x80000000
adc edx, 0
test edx, edx
ja 0x50ae5b
jb 0x509f5f
cmp ecx, 0xffffffff
ja 0x50ae5b
cmp dword [esp + 0xe0], 0
mov esi, dword [esp + 0x18]
jne 0x50ab82
mov edx, dword [esp + 0x4c]
mov eax, dword [esi + 4]
mov ecx, dword [edx + 4]
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x50ab82
cmp dword [esp + 0x24], 0
jne 0x50ab82
cmp dword [esp + 0x10], 0
je 0x50ab82
mov eax, dword [esp + 0xb8]
cmp eax, 4
jne 0x50a290
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x58], 0
test ecx, ecx
jle 0x50ae76
mov eax, ebx
mov ebx, dword [esp + 0x48]
cdq
mov dword [esp + 0xa4], eax
mov eax, ebp
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xac], eax
mov eax, edi
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x40], edx
xor edx, edx
nop
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x3c], edi
mov dword [esp + 0x60], 0
test eax, eax
jle 0x50a214
mov eax, dword [esp + 0x6c]
cdq
mov ecx, eax
mov dword [esp + 0x78], edx
mov eax, dword [esp + 0x84]
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x9c], edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x78]
add ecx, ebp
adc eax, ebx
test eax, eax
jl 0x50a19c
jg 0x50a0af
test ecx, ecx
jb 0x50a19c
mov eax, dword [esp + 0x74]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a19c
jg 0x50a0ca
test eax, eax
jb 0x50a19c
mov eax, dword [esp + 0x68]
cdq
add eax, dword [esp + 0x2c]
adc edx, dword [esp + 0x20]
test edx, edx
jl 0x50a19c
jg 0x50a0e9
test eax, eax
jb 0x50a19c
mov eax, dword [esp + 0xd4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf40
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xcc]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x68]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
push dword [esp + 0x3c]
mov ebx, eax
mov eax, dword [esp + 0xcc]
push dword [esp + 0x14]
imul ebx, dword [esp + 0xc8]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x24]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xc8]
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x60]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
add ebx, dword [esp + 0xbc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x3c]
mov eax, dword [ebx + eax*4]
mov ebx, dword [esp + 0x1c]
mov dword [ebx], eax
mov ebx, dword [esp + 0x24]
add ebp, dword [esp + 0x88]
mov eax, dword [esp + 0x98]
adc ebx, dword [esp + 0x8c]
add esi, dword [esp + 0x90]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0x94]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0x9c]
adc dword [esp + 0x20], eax
mov eax, dword [esp + 0x60]
add dword [esp + 0x1c], ecx
inc eax
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x3c], edi
mov dword [esp + 0x60], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a095
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x38]
add ebx, dword [esp + 0xa4]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x48]
adc ebx, dword [esp + 0xa8]
add ebp, dword [esp + 0xac]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x44]
adc ebp, dword [esp + 0xb0]
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x30]
add ebp, dword [esp + 0xb4]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x40]
inc edx
add dword [esp + 0x54], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x58], edx
cmp edx, ecx
jl 0x50a000
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x4c]
jmp 0x50ae78
cmp eax, 3
jne 0x50a59f
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x60], 0
test ecx, ecx
jle 0x50ae76
add dword [esp + 0x54], 2
mov eax, ebx
cdq
mov dword [esp + 0x98], eax
mov eax, ebp
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x90], eax
mov eax, edi
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x78], edx
xor edx, edx
nop
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x58], 0
test eax, eax
jle 0x50a523
mov eax, dword [esp + 0x6c]
cdq
mov ecx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x84]
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x24], eax
nop dword [eax]
mov eax, dword [esp + 0x40]
add ecx, ebp
adc eax, ebx
test eax, eax
jl 0x50a4ab
jg 0x50a3aa
test ecx, ecx
jb 0x50a4ab
mov eax, dword [esp + 0x74]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a4ab
jg 0x50a3c5
test eax, eax
jb 0x50a4ab
mov eax, dword [esp + 0x68]
cdq
add eax, dword [esp + 0x2c]
adc edx, dword [esp + 0x3c]
test edx, edx
jl 0x50a4ab
jg 0x50a3e4
test eax, eax
jb 0x50a4ab
mov eax, dword [esp + 0xc8]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf40
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xc4]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x60]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
push dword [esp + 0x20]
mov ebx, eax
mov eax, dword [esp + 0xd8]
push dword [esp + 0x14]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x1c]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xd0]
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x68]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
imul eax, dword [esp + 0xc0]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
add eax, dword [esp + 0xbc]
lea ecx, [eax + ebx*2]
movzx eax, byte [ecx + ebx]
add ecx, ebx
mov ebx, dword [esp + 0x24]
mov byte [ebx - 2], al
movzx eax, byte [ecx + 1]
mov byte [ebx - 1], al
movzx eax, byte [ecx + 2]
mov byte [ebx], al
mov ebx, dword [esp + 0x1c]
add ebp, dword [esp + 0xb4]
mov eax, dword [esp + 0xa4]
adc ebx, dword [esp + 0xb0]
add esi, dword [esp + 0xac]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0xa8]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
adc dword [esp + 0x3c], eax
mov eax, dword [esp + 0x58]
add dword [esp + 0x24], ecx
inc eax
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a390
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x38]
add ebx, dword [esp + 0x98]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x48]
adc ebx, dword [esp + 0x94]
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0x34]
add ebx, dword [esp + 0x90]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x44]
adc ebx, dword [esp + 0x8c]
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x30]
add ebx, dword [esp + 0x88]
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x14]
adc ebx, dword [esp + 0x78]
inc edx
add dword [esp + 0x54], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x60], edx
cmp edx, ecx
jl 0x50a2f0
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x4c]
jmp 0x50ae78
cmp eax, 2
jne 0x50a892
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x60], 0
test ecx, ecx
jle 0x50ae76
mov eax, ebx
mov ebx, dword [esp + 0x48]
cdq
mov dword [esp + 0x98], eax
mov eax, ebp
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x90], eax
mov eax, edi
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x78], edx
xor edx, edx
nop dword [eax]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x58], 0
test eax, eax
jle 0x50a816
mov eax, dword [esp + 0x6c]
cdq
mov ecx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x84]
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x40]
add ecx, ebp
adc eax, ebx
test eax, eax
jl 0x50a79e
jg 0x50a6af
test ecx, ecx
jb 0x50a79e
mov eax, dword [esp + 0x74]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50a79e
jg 0x50a6ca
test eax, eax
jb 0x50a79e
mov eax, dword [esp + 0x68]
cdq
add eax, dword [esp + 0x2c]
adc edx, dword [esp + 0x3c]
test edx, edx
jl 0x50a79e
jg 0x50a6e9
test eax, eax
jb 0x50a79e
mov eax, dword [esp + 0xd4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf40
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xcc]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x68]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
push dword [esp + 0x20]
mov ebx, eax
mov eax, dword [esp + 0xcc]
push dword [esp + 0x14]
imul ebx, dword [esp + 0xc8]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x1c]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xc8]
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x60]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
add ebx, dword [esp + 0xbc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
mov ax, word [ebx + eax*2]
mov ebx, dword [esp + 0x24]
mov word [ebx], ax
mov ebx, dword [esp + 0x1c]
add ebp, dword [esp + 0xb4]
mov eax, dword [esp + 0xa4]
adc ebx, dword [esp + 0xb0]
add esi, dword [esp + 0xac]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0xa8]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
adc dword [esp + 0x3c], eax
mov eax, dword [esp + 0x58]
add dword [esp + 0x24], ecx
inc eax
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a695
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x38]
add ebx, dword [esp + 0x98]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x48]
adc ebx, dword [esp + 0x94]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x44]
adc ebp, dword [esp + 0x8c]
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x30]
add ebp, dword [esp + 0x88]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x78]
inc edx
add dword [esp + 0x54], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x60], edx
cmp edx, ecx
jl 0x50a600
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x4c]
jmp 0x50ae78
cmp eax, 1
jne 0x50ae76
mov ecx, dword [esp + 0x130]
mov dword [esp + 0x60], 0
test ecx, ecx
jle 0x50ae76
mov eax, ebx
mov ebx, dword [esp + 0x48]
cdq
mov dword [esp + 0x98], eax
mov eax, ebp
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x90], eax
mov eax, edi
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x78], edx
xor edx, edx
nop
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], esi
mov esi, dword [esp + 0x14]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edi
mov dword [esp + 0x58], 0
test eax, eax
jle 0x50ab06
mov eax, dword [esp + 0x6c]
cdq
mov ecx, eax
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x84]
cdq
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0xb0], edx
cdq
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0xa8], edx
cdq
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0xa0], edx
mov dword [esp + 0x24], eax
mov eax, ecx
mov ecx, dword [esp + 0x40]
add eax, ebp
adc ecx, ebx
test ecx, ecx
jl 0x50aa8e
jg 0x50a9a1
test eax, eax
jb 0x50aa8e
mov eax, dword [esp + 0x74]
cdq
add eax, esi
adc edx, edi
test edx, edx
jl 0x50aa8e
jg 0x50a9bc
test eax, eax
jb 0x50aa8e
mov eax, dword [esp + 0x68]
cdq
add eax, dword [esp + 0x2c]
adc edx, dword [esp + 0x3c]
test edx, edx
jl 0x50aa8e
jg 0x50a9db
test eax, eax
jb 0x50aa8e
mov eax, dword [esp + 0xd4]
push edi
cdq
push esi
push edx
push eax
call fcn.0050cf40
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xcc]
push ebx
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x68]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
push dword [esp + 0x20]
mov ebx, eax
mov eax, dword [esp + 0xcc]
push dword [esp + 0x14]
imul ebx, dword [esp + 0xc8]
cdq
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x1c]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0xc8]
cdq
push ebp
push edx
push eax
call fcn.0050cf40
push dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x60]
push dword [esp + 0x2c]
adc esi, edx
cdq
add edi, eax
adc esi, edx
push esi
push edi
call fcn.0050d020
add ebx, dword [esp + 0xbc]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x20]
mov al, byte [eax + ebx]
mov ebx, dword [esp + 0x24]
mov byte [ebx], al
mov ebx, dword [esp + 0x1c]
add ebp, dword [esp + 0xb4]
mov eax, dword [esp + 0xa4]
adc ebx, dword [esp + 0xb0]
add esi, dword [esp + 0xac]
mov ecx, dword [esp + 0xb8]
adc edi, dword [esp + 0xa8]
add dword [esp + 0x2c], eax
mov eax, dword [esp + 0xa0]
adc dword [esp + 0x3c], eax
mov eax, dword [esp + 0x58]
add dword [esp + 0x24], ecx
inc eax
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 0x20], edi
mov dword [esp + 0x58], eax
cmp eax, dword [esp + 0x12c]
jl 0x50a985
mov ecx, dword [esp + 0x130]
mov eax, dword [esp + 0x12c]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x38]
add ebx, dword [esp + 0x98]
mov ebp, dword [esp + 0x34]
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x48]
adc ebx, dword [esp + 0x94]
add ebp, dword [esp + 0x90]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x44]
adc ebp, dword [esp + 0x8c]
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x30]
add ebp, dword [esp + 0x88]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x14]
adc ebp, dword [esp + 0x78]
inc edx
add dword [esp + 0x54], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x60], edx
cmp edx, ecx
jl 0x50a8f0
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x4c]
jmp 0x50ae78
mov esi, dword [esi + 0x34]
lea eax, [esp + 0xe4]
push 0x40
push 0
push eax
mov dword [esp + 0x4c], esi
call fcn.00459450
mov eax, dword [esp + 0x24]
add esp, 0xc
mov cl, byte [esp + 0x16d]
mov edx, dword [esp + 0x174]
mov eax, dword [eax + 4]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0x110], eax
mov esi, dword [esi + 0x44]
mov eax, dword [esp + 0x16c]
and esi, 0xfffffffc
mov byte [esp + 0x121], cl
mov cl, byte [esp + 0x16e]
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 dword [esp + 0x118], esi
cmp al, 0xff
jne 0x50ac4e
cmp cl, al
jne 0x50ac4e
cmp dl, al
jne 0x50ac4e
cmp byte [esp + 0x16d], al
jne 0x50ac4e
cmp byte [esp + 0x171], al
jne 0x50ac4e
cmp byte [esp + 0x175], al
jne 0x50ac4e
cmp byte [esp + 0x16e], al
jne 0x50ac4e
cmp byte [esp + 0x172], al
jne 0x50ac4e
cmp byte [esp + 0x176], al
je 0x50ac58
or esi, 1
mov dword [esp + 0x118], esi
cmp byte [esp + 0x16f], 0xff
jne 0x50ac76
cmp byte [esp + 0x173], 0xff
jne 0x50ac76
cmp byte [esp + 0x177], 0xff
je 0x50ac80
or esi, 2
mov dword [esp + 0x118], esi
mov esi, dword [esp + 0x40]
mov esi, dword [esi + 0x48]
mov dword [esp + 0x11c], esi
mov esi, dword [esp + 0xbc]
mov dword [esp + 0xe4], esi
mov esi, dword [esp + 0xc0]
mov dword [esp + 0xf0], esi
mov esi, dword [esp + 0x54]
mov dword [esp + 0xf8], esi
mov esi, dword [esp + 0xd0]
mov dword [esp + 0x104], esi
mov esi, dword [esp + 0x28]
add esi, 0x80000000
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x50]
adc esi, 0
test esi, esi
ja 0x50ae33
jb 0x50aced
cmp dword [esp + 0x40], 0xffffffff
ja 0x50ae33
mov esi, dword [esp + 0x38]
add esi, 0x80000000
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x48]
adc esi, 0
test esi, esi
ja 0x50ae24
jb 0x50ad17
cmp dword [esp + 0x40], 0xffffffff
ja 0x50ae24
mov esi, dword [esp + 0x34]
add esi, 0x80000000
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x44]
adc esi, 0
test esi, esi
ja 0x50ae15
jb 0x50ad41
cmp dword [esp + 0x40], 0xffffffff
ja 0x50ae15
mov esi, dword [esp + 0x30]
add esi, 0x80000000
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x14]
adc esi, 0
test esi, esi
ja 0x50ae06
jb 0x50ad6b
cmp dword [esp + 0x40], 0xffffffff
ja 0x50ae06
push dword [esp + 0x10]
movups xmm0, xmmword [esp + 0x128]
push edx
push ecx
push eax
push dword [esp + 0x40]
push dword [esp + 0x48]
push dword [esp + 0x50]
push dword [esp + 0xf0]
push dword [esp + 0xec]
push dword [esp + 0xec]
push dword [esp + 0xec]
push edi
push dword [esp + 0xac]
push ebp
push dword [esp + 0xb8]
push ebx
push dword [esp + 0xc4]
push dword [esp + 0xac]
push dword [esp + 0xbc]
push dword [esp + 0xb8]
push dword [esp + 0x78]
sub esp, 0x10
mov eax, esp
push dword [esp + 0xc8]
movups xmmword [eax], xmm0
lea eax, [esp + 0x14c]
push dword [esp + 0xc4]
push eax
call fcn.005089a0
mov edi, dword [esp + 0x88]
add esp, 0x70
mov edx, dword [esp + 0x4c]
jmp 0x50ae78
push dword [esp + 0x14]
push dword [esp + 0x34]
push str.w2_row
jmp 0x50ae40
push dword [esp + 0x44]
push dword [esp + 0x38]
push str.w1_row
jmp 0x50ae40
push dword [esp + 0x48]
push dword [esp + 0x3c]
push str.w0_row
jmp 0x50ae40
push dword [esp + 0x50]
push dword [esp + 0x2c]
push str.area
push str.integer_overflow___s___I64d_
call fcn.0041b670
mov edi, dword [esp + 0x28]
add esp, 0x10
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x70], eax
jmp 0x50ae78
push 0x557580
call fcn.0041b670
mov edi, dword [esp + 0x1c]
add esp, 4
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x70], eax
jmp 0x50ae78
mov edi, esi
cmp dword [esp + 0xd8], 0
je 0x50ae8b
push edx
call fcn.0045cac0
add esp, 4
cmp dword [esp + 0xdc], 0
je 0x50ae9e
push edi
call fcn.0045cac0
add esp, 4
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x144]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00401033
add esp, 0x138
ret