Function at 0x4773b0
Capabilities:
Get geographical location
Reference sql statements

Disassembly:
sub esp, 0x1c
push ebp
mov ebp, ecx
mov dword [esp + 0xc], ebp
call fcn.00476e10
test eax, eax
je 0x4786b2
inc dword [ebp + 0xe930]
mov ecx, dword [ebp + 0xe940]
test ecx, ecx
je 0x4786b2
mov eax, dword [ebp + 0xe96c]
xor edx, edx
imul eax, dword [0x15b350c]
shl ecx, 8
push ebx
push esi
mov esi, dword [ebp + 0xe910]
push edi
lea eax, [eax + eax*4]
div ecx
mov dword [ebp + 0xe91c], eax
cmp esi, 0x20
jb 0x47740b
mov esi, 0x1f
test byte [ebp + 0xe920], 0x20
je 0x477427
cmp dword [ebp + 0xe928], 0
je 0x477427
cmp esi, 6
jge 0x477427
mov esi, 6
mov ecx, dword [ebp + 0xe95c]
cmp ecx, 0x80
jle 0x47744b
lea eax, [ecx - 0x80]
lea ecx, [esi + 4]
imul eax, ecx
cdq
and edx, 0xf
lea ecx, [edx + eax]
sar ecx, 4
sub ecx, 0xffffff80
sar esi, 1
test byte [0x16255c4], 4
je 0x47745f
mov esi, dword [esi*4 + str.____hpx]
jmp 0x477466
mov esi, dword [esi*4 + str.___p]
mov eax, dword [ebp + 0xe964]
add eax, 0x10
imul eax, ecx
shr eax, 6
cmp eax, 0x200
jbe 0x477481
mov eax, 0x200
test dword [ebp + 0xe90c], 0x400
je 0x4774a7
mov ecx, dword [ebp + 0xe988]
test ecx, ecx
je 0x4774a7
push ecx
push dword [ebp + 0xe984]
push eax
call fcn.00478700
add esp, 0xc
shl eax, 7
xor edx, edx
div esi
mov ecx, eax
mov dword [esp + 0x20], ecx
cmp ecx, 0x180
jbe 0x4774c4
mov dword [esp + 0x20], 0x180
xor eax, eax
mov dword [ebp + 0xe914], 0
mov esi, ebp
mov dword [esp + 0x10], eax
jmp 0x4774e0
mov ebx, dword [esi + 0x24]
test ebx, 0x400
je 0x47750f
mov eax, dword [esi + 0x7c]
or eax, dword [esi + 0x14]
or eax, dword [esi + 0x10]
mov eax, dword [esp + 0x10]
jne 0x47750f
mov dword [esi + 0x20], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
test ebx, 0x100
jne 0x4785dd
cmp eax, dword [ebp + 0xe910]
jb 0x47752d
cmp dword [esi + 0x20], 0
je 0x4785dd
mov ecx, dword [esi + 0x78]
movsx eax, word [esi + 0xd2]
mov dword [esp + 0x28], ecx
add ecx, eax
xor eax, eax
mov dword [esi + 0xc], 0
test ecx, ecx
mov dword [esi + 0x6c], 0
sets al
dec eax
and eax, ecx
mov dword [esi + 0x70], eax
cmp eax, 0x100
jle 0x477566
mov dword [esi + 0x70], 0x100
cmp dword [esi + 0x80], 0
mov dword [esi + 0x5c], 0
je 0x478015
cmp dword [esi + 0x20], 0
je 0x478015
movsx edi, word [esi + 0xd0]
add edi, dword [esi + 0x74]
jns 0x477594
xor edi, edi
jmp 0x4775a1
cmp edi, 0x100
jle 0x4775a1
mov edi, 0x100
test ebx, 0x20000
je 0x47764d
mov ebx, dword [esi + 0xc8]
and ebx, 0x3f
test edi, edi
jle 0x47761a
mov eax, dword [ebp + 0xe920]
and al, 4
movzx ecx, al
movzx eax, byte [esi + 0xe3]
neg ecx
sbb ecx, ecx
and eax, 3
add ecx, 6
dec eax
je 0x477604
dec eax
je 0x4775fa
dec eax
movzx eax, byte [esi + 0xe5]
je 0x4775f0
movsx edx, word [ebx*2 + 0x521ad8]
jmp 0x477613
movsx edx, word [ebx*2 + 0x521c58]
jmp 0x477613
movsx edx, word [ebx*2 + 0x521bd8]
jmp 0x47760c
movsx edx, word [ebx*2 + 0x521b58]
movzx eax, byte [esi + 0xe5]
imul edx, eax
sar edx, cl
add edi, edx
cmp dword [ebp + 0xe92c], 0
jne 0x477638
test dword [ebp + 0xe920], 0x122
je 0x47764a
test byte [ebp + 0xe90c], 4
jne 0x47764a
movzx eax, byte [esi + 0xe4]
add eax, ebx
and eax, 0x3f
mov dword [esi + 0xc8], eax
mov ebx, dword [esi + 0x24]
cmp byte [esi + 0xd8], 0x12
jne 0x4776b3
movzx ecx, byte [esi + 0xf3]
mov edx, ecx
and ecx, 0xf
shr edx, 4
add ecx, edx
test byte [ebp + 0xe920], 0x20
je 0x477679
test byte [ebp + 0xe90c], 4
je 0x47767d
add ecx, 2
inc edx
movzx eax, byte [esi + 0xf2]
cmp eax, ecx
sbb ecx, ecx
and ecx, eax
cmp dword [ebp + 0xe92c], 0
jne 0x47769c
test byte [ebp + 0xe920], 0x22
je 0x4776aa
cmp ecx, edx
sbb eax, eax
and edi, eax
inc cl
mov byte [esi + 0xf2], cl
or ebx, 0x1000000
mov dword [esi + 0x24], ebx
test edi, edi
jns 0x4776bb
xor edi, edi
jmp 0x4776c8
cmp edi, 0x100
jle 0x4776c8
mov edi, 0x100
mov eax, dword [esi + 0x8c]
shl edi, 6
test eax, eax
je 0x477a10
mov edx, dword [esi + 0x24]
test edx, 0x200000
je 0x4777e1
mov cl, byte [eax + 0x22c]
test cl, cl
je 0x4777e1
mov eax, dword [esi + 0x94]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x1c], eax
dec ebx
je 0x477726
mov ecx, dword [esi + 0x8c]
add ecx, 0xc
movzx eax, word [ecx]
cmp dword [esp + 0x1c], eax
jle 0x477724
inc edx
add ecx, 2
cmp edx, ebx
jb 0x477711
jmp 0x477726
mov ebx, edx
mov ecx, dword [esi + 0x8c]
mov eax, dword [esp + 0x1c]
movzx edx, word [ecx + ebx*2 + 0xc]
cmp eax, edx
jl 0x47774e
movzx ecx, byte [ebx + ecx + 0xcc]
mov ebp, dword [esp + 0x18]
shl ecx, 2
mov dword [esp + 0x14], edx
jmp 0x477778
test ebx, ebx
je 0x477772
mov ebp, dword [esi + 0x8c]
movzx ecx, byte [ebx + ecx + 0xcb]
shl ecx, 2
movzx ebp, word [ebp + ebx*2 + 0xa]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x18]
jmp 0x477778
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp eax, edx
jle 0x477782
mov eax, edx
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x14]
jle 0x4777bb
cmp eax, dword [esp + 0x14]
jle 0x4777bb
mov eax, dword [esi + 0x8c]
sub edx, dword [esp + 0x14]
movzx eax, byte [ebx + eax + 0xcc]
mov ebx, dword [esp + 0x1c]
sub ebx, dword [esp + 0x14]
shl eax, 2
sub eax, ecx
mov dword [esp + 0x1c], edx
imul eax, ebx
cdq
idiv dword [esp + 0x1c]
add ecx, eax
test ecx, ecx
jns 0x4777c3
xor ecx, ecx
jmp 0x4777d0
cmp ecx, 0x100
jle 0x4777d0
mov ecx, 0x100
mov eax, dword [esi + 0x8c]
mov edx, dword [esi + 0x24]
imul ecx, edi
sar ecx, 8
mov edi, ecx
test edx, 0x400000
je 0x4778e9
mov cl, byte [eax + 0x22d]
test cl, cl
je 0x4778e9
mov eax, dword [esi + 0x98]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x14], eax
dec ebx
je 0x47782b
mov ecx, dword [esi + 0x8c]
add ecx, 0x4c
movzx eax, word [ecx]
cmp dword [esp + 0x14], eax
jle 0x477829
inc edx
add ecx, 2
cmp edx, ebx
jb 0x477816
jmp 0x47782b
mov ebx, edx
mov ecx, dword [esi + 0x8c]
mov edx, dword [esp + 0x14]
movzx eax, word [ecx + ebx*2 + 0x4c]
movzx ecx, byte [ebx + ecx + 0xec]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], ecx
cmp edx, eax
jge 0x477890
test ebx, ebx
je 0x477867
mov eax, dword [esi + 0x8c]
movzx ecx, byte [ebx + eax + 0xeb]
movzx eax, word [eax + ebx*2 + 0x4a]
jmp 0x47786e
mov ecx, pe_nt_image_headers32
xor eax, eax
cmp dword [esp + 0x1c], eax
jle 0x477890
cmp edx, eax
jle 0x477890
mov ebx, dword [esp + 0x24]
sub edx, eax
sub dword [esp + 0x1c], eax
sub ebx, ecx
imul ebx, edx
mov eax, ebx
cdq
idiv dword [esp + 0x1c]
add ecx, eax
test ecx, ecx
jns 0x477898
xor ecx, ecx
jmp 0x4778a2
cmp ecx, 0x40
jle 0x4778a2
mov ecx, 0x40
mov ebx, dword [esp + 0x28]
cmp ebx, 0x80
jl 0x4778bd
mov eax, 0x100
add ecx, 0xffffffe0
sub eax, ebx
imul eax, ecx
jmp 0x4778c3
lea eax, [ecx - 0x20]
imul eax, ebx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add ebx, eax
test ebx, ebx
jns 0x4778d6
xor ebx, ebx
jmp 0x4778e3
cmp ebx, 0x100
jle 0x4778e3
mov ebx, 0x100
mov edx, dword [esi + 0x24]
mov dword [esi + 0x70], ebx
mov ecx, dword [esi + 0x8c]
test edx, 0x400
je 0x477925
mov eax, dword [ecx]
test eax, eax
je 0x47791c
add eax, eax
sub dword [esi + 0x7c], eax
cmp dword [esi + 0x7c], 0
jg 0x47790f
mov dword [esi + 0x7c], 0
mov eax, dword [esi + 0x7c]
imul eax, edi
sar eax, 0x10
mov edi, eax
jmp 0x477925
mov eax, dword [esi + 0x7c]
neg eax
sbb eax, eax
and edi, eax
mov dl, byte [ecx + 0x247]
test dl, dl
je 0x477973
mov ebx, dword [esi + 0x70]
test ebx, ebx
je 0x477973
mov al, byte [esi + 0xd4]
test al, al
je 0x477973
movzx ecx, byte [ecx + 0x248]
movzx eax, al
sub eax, ecx
movsx ecx, dl
dec eax
imul eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, ebx
jns 0x477964
xor eax, eax
jmp 0x477970
cmp eax, 0x100
jle 0x477970
mov eax, 0x100
mov dword [esi + 0x70], eax
test edi, edi
je 0x47799f
mov eax, dword [esi + 0xac]
imul eax, dword [esi + 0xa8]
push 0x100000
push eax
mov eax, dword [ebp + 0xe960]
imul eax, edi
push eax
call fcn.00478700
add esp, 0xc
mov dword [esi + 0x6c], eax
mov eax, dword [ebp + 0xe974]
cmp dword [esi + 0x80], eax
jge 0x4779b3
mov dword [esi + 0x80], eax
mov eax, dword [esi + 0x24]
mov ebx, dword [esi + 0x80]
and eax, 0x180000
cmp eax, 0x180000
jne 0x4779e6
push dword [esi + 0x84]
mov ecx, ebp
push dword [esi + 0xb0]
push ebx
call fcn.00473950
push eax
mov ecx, ebp
call fcn.00473b60
mov ebx, eax
cmp byte [esi + 0xd8], 1
jne 0x477a52
mov eax, dword [ebp + 0xe92c]
xor edx, edx
mov ecx, 3
div ecx
dec edx
je 0x477a29
dec edx
jne 0x477a52
movzx ecx, byte [esi + 0xd9]
and ecx, 0xf
jmp 0x477a33
test dword [esi + 0x24], 0x400
je 0x477973
mov dword [esi + 0x7c], 0
jmp 0x47799f
movzx ecx, byte [esi + 0xd9]
shr ecx, 4
push dword [esi + 0x84]
movzx eax, byte [esi + 0xd4]
push dword [esi + 0xb0]
add ecx, eax
push ecx
mov ecx, ebp
call fcn.00473b60
mov ebx, eax
test dword [ebp + 0xe90c], 0x10000
je 0x477a7a
cmp ebx, 0x1c4
jge 0x477a6d
mov ebx, 0x1c4
jmp 0x477a7a
cmp ebx, 0xd60
jle 0x477a7a
mov ebx, 0xd60
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x477c07
mov ecx, dword [esi + 0x24]
test ecx, 0x800000
je 0x477c07
cmp byte [eax + 0x22e], 0
je 0x477c07
movzx edi, byte [eax + 0x22e]
xor ecx, ecx
mov edx, dword [esi + 0x9c]
mov dword [esp + 0x1c], edx
dec edi
je 0x477adb
mov edx, eax
add edx, 0x8c
movzx eax, word [edx]
cmp dword [esp + 0x1c], eax
jle 0x477ad5
inc ecx
add edx, 2
cmp ecx, edi
jb 0x477ac2
jmp 0x477ad7
mov edi, ecx
mov edx, dword [esp + 0x1c]
mov eax, dword [esi + 0x8c]
movzx ecx, word [eax + edi*2 + 0x8c]
mov dword [esp + 0x1c], ecx
cmp edx, ecx
jl 0x477b10
movzx eax, byte [edi + eax + 0x10c]
lea ecx, [eax*8 - 0x100]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x8c]
jmp 0x477b3d
test edi, edi
je 0x477b37
movzx eax, byte [edi + eax + 0x10b]
lea ecx, [eax*8 - 0x100]
mov eax, dword [esi + 0x8c]
movzx ebp, word [eax + edi*2 + 0x8a]
mov dword [esp + 0x14], ebp
jmp 0x477b3d
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp edx, dword [esp + 0x1c]
jle 0x477b47
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x18]
jle 0x477b80
cmp edx, dword [esp + 0x14]
jle 0x477b80
movzx eax, byte [edi + eax + 0x10c]
sub edx, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
sub edi, dword [esp + 0x14]
lea eax, [eax*8 - 0x100]
sub eax, ecx
imul eax, edx
cdq
idiv edi
add ecx, eax
cmp ecx, 0xffffff00
jge 0x477b8f
mov ecx, 0xffffff00
jmp 0x477b9c
cmp ecx, 0x100
jle 0x477b9c
mov ecx, 0x100
mov eax, dword [esi + 0x8c]
test dword [eax + 4], 0x400
je 0x477bc2
mov eax, dword [esi + 0x24]
shr eax, 0xe
push ecx
not eax
mov ecx, ebp
and eax, 1
push eax
push esi
call fcn.00488320
jmp 0x477c07
test ecx, ecx
jns 0x477be3
neg ecx
cmp ecx, 0xff
jle 0x477bd5
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x521e58]
jmp 0x477bfc
cmp ecx, 0xff
jle 0x477bf0
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x522258]
push ebx
call fcn.00478700
mov ebx, eax
add esp, 0xc
test dword [esi + 0x24], 0x10000
je 0x477d48
movzx eax, byte [esi + 0xe0]
mov edx, dword [esi + 0xc4]
and eax, 3
mov dword [esp + 0x1c], edx
dec eax
je 0x477c4f
dec eax
je 0x477c45
dec eax
je 0x477c3b
movsx eax, word [edx*2 + 0x521ad8]
jmp 0x477c57
movsx eax, word [edx*2 + 0x521c58]
jmp 0x477c57
movsx eax, word [edx*2 + 0x521bd8]
jmp 0x477c57
movsx eax, word [edx*2 + 0x521b58]
cmp dword [ebp + 0xe920], 0x20
jne 0x477c6e
test byte [ebp + 0xe90c], 4
mov ecx, 7
je 0x477c73
mov ecx, 6
movzx edi, byte [esi + 0xe2]
imul edi, eax
sar edi, cl
test byte [ebp + 0xe90c], 0x10
je 0x477d19
test byte [ebp + 0xe920], 0x20
je 0x477d19
mov dword [esp + 0x28], edi
push 0x10000
test edi, edi
jns 0x477cdc
neg edi
mov eax, edi
mov dword [esp + 0x2c], edi
sar eax, 2
push dword [eax*4 + 0x522258]
push ebx
call fcn.00478700
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x477d15
push 0x10000
push dword [eax*4 + 0x521e18]
jmp 0x477d08
sar edi, 2
push dword [edi*4 + 0x521e58]
push ebx
call fcn.00478700
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x477d15
push 0x10000
push dword [eax*4 + 0x521dd8]
push ebx
call fcn.00478700
sub eax, ebx
add esp, 0xc
add edi, eax
mov edx, dword [esp + 0x1c]
add ebx, edi
cmp dword [ebp + 0xe92c], 0
jne 0x477d36
test byte [ebp + 0xe920], 0x20
je 0x477d48
test byte [ebp + 0xe90c], 4
jne 0x477d48
movzx eax, byte [esi + 0xe1]
add eax, edx
and eax, 0x3f
mov dword [esi + 0xc4], eax
mov edx, dword [esi + 0x24]
test edx, 0x40000
je 0x477dd9
mov edx, dword [esi + 0xcc]
movzx eax, byte [esi + 0xe6]
and eax, 3
lea ecx, [edx + 0x10]
shr ecx, 2
and ecx, 0x3f
dec eax
je 0x477d97
dec eax
je 0x477d8d
dec eax
je 0x477d83
movsx ecx, word [ecx*2 + 0x521ad8]
jmp 0x477d9f
movsx ecx, word [ecx*2 + 0x521c58]
jmp 0x477d9f
movsx ecx, word [ecx*2 + 0x521bd8]
jmp 0x477d9f
movsx ecx, word [ecx*2 + 0x521b58]
movzx eax, byte [esi + 0xe7]
add eax, edx
mov dword [esi + 0xcc], eax
movzx eax, byte [esi + 0xe8]
imul eax, ecx
add eax, 2
sar eax, 3
add eax, dword [esi + 0x70]
jns 0x477dc7
xor eax, eax
jmp 0x477dd3
cmp eax, 0x100
jle 0x477dd3
mov eax, 0x100
mov edx, dword [esi + 0x24]
mov dword [esi + 0x70], eax
mov edi, dword [esi + 0x90]
xor eax, eax
mov dword [esp + 0x28], eax
test edi, edi
je 0x477f3f
cmp byte [edi + 0x28], al
je 0x477f3f
mov cl, byte [edi + 0x27]
test cl, cl
jne 0x477e0c
movzx eax, byte [edi + 0x28]
shl eax, 8
mov dword [esi + 0xbc], eax
jmp 0x477e52
test byte [ebp + 0xe920], 0x20
je 0x477e1d
movzx eax, cl
shl eax, 3
jmp 0x477e32
test edx, 0x200
jne 0x477e38
movzx eax, byte [edi + 0x28]
shl eax, 8
movzx ecx, cl
cdq
idiv ecx
add dword [esi + 0xbc], eax
mov eax, dword [esi + 0xbc]
movzx ecx, byte [edi + 0x28]
sar eax, 8
cmp eax, ecx
jle 0x477e52
shl ecx, 8
mov dword [esi + 0xbc], ecx
movzx eax, byte [edi + 0x29]
add dword [esi + 0xc0], eax
movzx eax, byte [edi + 0x26]
mov ecx, dword [esi + 0xc0]
dec eax
cmp eax, 3
ja case.default.0x477e6c
jmp dword [eax*4 + 0x4786ec]
mov eax, ecx
and eax, 0x3f
movsx edx, word [eax*2 + 0x521c58]
lea eax, [ecx + 1]
mov dword [esi + 0xc0], eax
jmp 0x477eca
shr ecx, 1
mov edx, 0xffffffc0
sub edx, ecx
and edx, 0x7f
sub edx, 0x40
jmp 0x477eca
mov edx, ecx
shr edx, 1
sub edx, 0x40
and edx, 0x7f
sub edx, 0x40
jmp 0x477eca
and cl, 0x80
movzx edx, cl
neg edx
sbb edx, edx
and edx, 0x80
add edx, 0xffffffc0
jmp 0x477eca
movzx eax, cl
movsx edx, byte [eax + 0x521cd8]
mov ecx, dword [esi + 0xbc]
imul ecx, edx
sar ecx, 8
test byte [ebp + 0xe920], 0x20
je 0x477f36
test ecx, ecx
jns 0x477efa
neg ecx
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x521e58]
mov eax, dword [eax*4 + 0x521e5c]
jmp 0x477f0d
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x522258]
mov eax, dword [eax*4 + 0x52225c]
sub eax, edx
sar ecx, 2
and ecx, 0x3f
imul eax, ecx
push 0x100
sar eax, 6
add eax, edx
push eax
push ebx
call fcn.00478700
mov ebx, eax
add esp, 0xc
movzx eax, bl
sar ebx, 8
jmp 0x477f3f
mov eax, dword [esp + 0x28]
sar ecx, 6
add ebx, ecx
cmp ebx, dword [ebp + 0xe974]
jg 0x477f5d
test byte [ebp + 0xe920], 2
je 0x477f57
mov dword [esi + 0x20], 0
mov ebx, dword [ebp + 0xe974]
cmp ebx, dword [ebp + 0xe978]
jle 0x477f93
test byte [ebp + 0xe920], 0x20
jne 0x477f76
cmp ebx, 0x100000
jl 0x477f8b
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
mov ebx, dword [ebp + 0xe978]
xor eax, eax
push eax
push dword [esi + 0x84]
mov ecx, ebp
push ebx
call fcn.00473020
test byte [ebp + 0xe920], 0x20
je 0x477fc7
cmp eax, 0x100
jae 0x477fc7
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
push dword [0x15b350c]
push 0x10000
push eax
call fcn.00478700
add esp, 0xc
lea ecx, [eax - 0xffb0]
cmp ecx, 0xe0
ja 0x477fee
mov eax, 0x10000
mov ecx, dword [ebp + 0xe968]
cmp ecx, 0x80
je 0x478002
imul eax, ecx
shr eax, 7
cmp eax, 0xff0000
jbe 0x47800e
mov eax, 0xff0000
inc eax
and eax, 0xfffffffc
mov dword [esi + 0xc], eax
mov edx, dword [esi + 0x8c]
test edx, edx
je 0x47829a
mov edi, dword [esi + 0x24]
test edi, 0x200000
je 0x478169
inc dword [esi + 0x94]
test byte [edx + 4], 4
je 0x4780b3
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x230]
movzx eax, word [edx + eax*2 + 0xc]
je 0x478054
inc eax
cmp dword [esi + 0x94], eax
jne 0x4780b3
movzx eax, byte [edx + 0x22f]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
mov bl, byte [edx + 0x230]
mov al, byte [edx + 0x22f]
cmp bl, al
jne 0x4780b3
movzx eax, al
cmp byte [eax + edx + 0xcc], 0
jne 0x4780b3
test byte [ebp + 0xe920], 4
je 0x4780a3
movzx ecx, byte [edx + 0x22c]
movzx eax, bl
inc eax
cmp eax, ecx
jne 0x4780b3
or edi, 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x24], edi
test byte [edx + 4], 2
je 0x4780ef
test dword [esi + 0x24], 0x200
jne 0x4780ef
movzx eax, byte [edx + 0x232]
movzx eax, word [edx + eax*2 + 0xc]
inc eax
cmp dword [esi + 0x94], eax
jne 0x478169
movzx eax, byte [edx + 0x231]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
jmp 0x478169
movzx eax, byte [edx + 0x22c]
movzx eax, word [edx + eax*2 + 0xa]
cmp dword [esi + 0x94], eax
jbe 0x478169
test byte [ebp + 0xe920], 0x20
jne 0x478115
test dword [esi + 0x24], 0x200
je 0x47811c
or dword [esi + 0x24], 0x400
movzx eax, byte [edx + 0x22c]
movzx eax, word [edx + eax*2 + 0xa]
mov dword [esi + 0x94], eax
movzx eax, byte [edx + 0x22c]
cmp byte [eax + edx + 0xcb], 0
jne 0x478169
mov eax, dword [esp + 0x10]
cmp eax, dword [ebp + 0xe910]
jae 0x478154
test byte [ebp + 0xe920], 0x20
je 0x478169
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
mov ecx, dword [esi + 0x24]
test ecx, 0x400000
je 0x4781ff
inc dword [esi + 0x98]
test byte [edx + 4], 0x20
je 0x4781b4
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x234]
movzx eax, word [edx + eax*2 + 0x4c]
je 0x47819a
inc eax
cmp dword [esi + 0x98], eax
jne 0x4781b4
movzx eax, byte [edx + 0x233]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], eax
test byte [edx + 4], 0x10
je 0x4781e5
movzx eax, byte [edx + 0x236]
movzx eax, word [edx + eax*2 + 0x4c]
inc eax
cmp dword [esi + 0x98], eax
jne 0x4781e5
test ecx, 0x200
jne 0x4781e5
movzx eax, byte [edx + 0x235]
movzx eax, word [edx + eax*2 + 0x4c]
jmp 0x4781f9
movzx eax, byte [edx + 0x22d]
movzx eax, word [edx + eax*2 + 0x4a]
cmp dword [esi + 0x98], eax
jbe 0x4781ff
mov dword [esi + 0x98], eax
test ecx, 0x800000
je 0x47829a
inc dword [esi + 0x9c]
test dword [edx + 4], 0x100
je 0x478246
movzx eax, byte [edx + 0x238]
movzx eax, word [edx + eax*2 + 0x8c]
cmp dword [esi + 0x9c], eax
jb 0x478246
movzx eax, byte [edx + 0x237]
movzx eax, word [edx + eax*2 + 0x8c]
mov dword [esi + 0x9c], eax
test byte [edx + 4], 0x80
je 0x47827d
test ecx, 0x200
jne 0x47827d
movzx eax, byte [edx + 0x23a]
movzx eax, word [edx + eax*2 + 0x8c]
inc eax
cmp dword [esi + 0x9c], eax
jne 0x47829a
movzx eax, byte [edx + 0x239]
movzx eax, word [edx + eax*2 + 0x8c]
jmp 0x478294
movzx eax, byte [edx + 0x22e]
movzx eax, word [edx + eax*2 + 0x8a]
cmp dword [esi + 0x9c], eax
jbe 0x47829a
mov dword [esi + 0x9c], eax
and dword [esi + 0x24], 0xffff7fff
mov edi, dword [esi + 0x6c]
test edi, edi
jne 0x4782b2
cmp dword [esi + 0x14], edi
jne 0x4782b2
cmp dword [esi + 0x10], edi
je 0x4782b9
or dword [esi + 0x24], 0x8000
mov ebx, dword [esi + 0xc]
mov eax, ebx
mov ecx, dword [esi + 0x2c]
sub ecx, dword [esi + 0x28]
sar eax, 0x10
inc eax
cmp eax, ecx
jl 0x4782d0
and dword [esi + 0x24], 0xfffffffd
mov eax, dword [esi + 0x60]
mov dword [esi + 0x68], 0
mov dword [esi + 0x64], 0
test eax, eax
je 0x4782ef
cmp dword [esi + 0x20], 0
je 0x4782ef
test ebx, ebx
jne 0x4782f1
xor eax, eax
mov dword [esi], eax
test eax, eax
je 0x4785ac
cmp dword [0x15b3514], 2
jb 0x478397
mov eax, dword [esi + 0x70]
add eax, 0xffffff80
imul eax, dword [0x15b3500]
cdq
and edx, 0x7f
lea ecx, [edx + eax]
sar ecx, 7
add ecx, 0x80
jns 0x47832b
xor ecx, ecx
jmp 0x478338
cmp ecx, 0x100
jle 0x478338
mov ecx, 0x100
mov edx, dword [0x16255c4]
test dl, 1
je 0x47834c
mov eax, 0x100
sub eax, ecx
mov ecx, eax
imul edi, dword [esp + 0x20]
shr edi, 7
mov eax, edi
test edx, 0x200
je 0x47837c
cmp ecx, 0x80
jge 0x478377
imul eax, ecx
shl edi, 7
sar eax, 8
mov dword [esi + 0x68], eax
sar edi, 8
jmp 0x4783a2
shl eax, 7
jmp 0x47837f
imul eax, ecx
sar eax, 8
mov dword [esi + 0x68], eax
mov eax, 0x100
sub eax, ecx
imul eax, edi
sar eax, 8
mov dword [esi + 0x64], eax
jmp 0x4783a5
imul edi, dword [esp + 0x20]
shr edi, 8
mov dword [esi + 0x68], edi
mov dword [esi + 0x64], edi
cmp dword [esi + 0x64], 0xffff
jle 0x4783b5
mov dword [esi + 0x64], 0xffff
cmp dword [esi + 0x68], 0xffff
jle 0x4783c5
mov dword [esi + 0x68], 0xffff
test byte [0x16255c4], 8
je 0x4783d7
or dword [esi + 0x24], 0x1000
jmp 0x47840c
and dword [esi + 0x24], 0xffffcfff
mov eax, dword [esi + 0x24]
cmp ebx, 0x10000
je 0x478404
mov ecx, dword [0x16255c4]
test cl, 0x10
jne 0x47840c
test ecx, 0x400
jne 0x47840c
cmp ebx, 0xff00
jl 0x47840c
or eax, 0x1000
mov dword [esi + 0x24], eax
sar dword [esi + 0x64], 4
sar dword [esi + 0x68], 4
mov ecx, dword [esi + 0x24]
mov edi, dword [esi + 0x64]
mov eax, dword [esi + 0x68]
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
mov dword [esp + 0x24], ecx
test ecx, 0x800
je 0x478445
cmp dword [0x15b3514], 2
ja 0x478445
neg eax
mov dword [esi + 0x68], eax
test cl, cl
jns 0x47844e
neg ebx
mov dword [esi + 0xc], ebx
test ecx, 0x8000
je 0x478561
mov edx, dword [esi + 0x10]
cmp edx, edi
jne 0x47846d
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x68]
je 0x478561
mov eax, dword [esi + 0x64]
mov ebx, eax
mov ebp, dword [esi + 0x14]
sub ebx, edx
mov edi, dword [0x15b351c]
shl ebx, 0xc
mov dword [esp + 0x28], ebx
mov ebx, dword [esi + 0x68]
mov dword [esp + 0x1c], ebx
sub dword [esp + 0x1c], ebp
shl dword [esp + 0x1c], 0xc
test dword [0x16255c4], 0x10000
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], edi
jne 0x4784c3
test byte [0x16255c0], 9
je 0x4784ff
test byte [0x16255c4], 0x10
je 0x4784ff
cmp dword [0x16255cc], 0x14
ja 0x4784ff
or edx, dword [esi + 0x14]
je 0x4784ff
or eax, ebx
je 0x4784ff
test ecx, 0x1000000
jne 0x4784ff
mov edi, dword [ebp + 0xe91c]
mov dword [esp + 0x14], edi
cmp edi, 0x800
jle 0x4784ef
mov edi, 0x800
mov dword [esp + 0x14], edi
mov ecx, dword [0x15b351c]
cmp edi, ecx
jge 0x4784ff
mov edi, ecx
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x28]
cdq
idiv edi
mov ecx, dword [esi + 0x64]
mov ebx, eax
mov eax, dword [esp + 0x1c]
cdq
idiv edi
mov edx, ebx
mov dword [esi + 0x18], ebx
imul edx, dword [esp + 0x14]
mov edi, eax
mov dword [esi + 0x1c], edi
sar edx, 0xc
sub ecx, edx
mov edx, dword [esi + 0x68]
mov dword [esi + 0x10], ecx
mov eax, edx
mov ecx, edi
imul ecx, dword [esp + 0x14]
sar ecx, 0xc
sub eax, ecx
or edi, ebx
mov dword [esi + 0x14], eax
je 0x47854a
mov eax, dword [esp + 0x14]
mov dword [esi + 0x5c], eax
jmp 0x478573
mov eax, dword [esp + 0x24]
and eax, 0xffff7fff
mov dword [esi + 0x14], edx
mov dword [esi + 0x24], eax
mov eax, dword [esi + 0x64]
mov dword [esi + 0x10], eax
jmp 0x478573
mov eax, dword [esi + 0x68]
and ecx, 0xffff7fff
mov dword [esi + 0x24], ecx
mov dword [esi + 0x10], edi
mov dword [esi + 0x14], eax
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x10]
shl eax, 0xc
mov dword [esi + 0x30], eax
mov eax, dword [esi + 0x14]
shl eax, 0xc
mov dword [esi + 0x34], eax
mov eax, dword [ebp + 0xe914]
mov dword [ebp + eax*4 + 0x8000], ecx
inc dword [ebp + 0xe914]
cmp dword [ebp + 0xe914], 0x80
jae 0x4785fd
mov eax, ecx
jmp 0x4785e7
cmp dword [esi + 0xa4], 0xff
jbe 0x4785c2
mov dword [esi + 0xa4], 0
mov eax, dword [esp + 0x10]
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x20], 0
jmp 0x4785e7
mov dword [esi + 0xa4], 0
inc eax
add esi, 0x100
mov dword [esp + 0x10], eax
cmp eax, 0x80
jb 0x4774e0
mov eax, dword [ebp + 0xe914]
cmp eax, dword [0x15b3504]
jb 0x47868b
test dword [0x16255c4], 0x10000
jne 0x47868b
test eax, eax
je 0x47868b
mov eax, 1
lea ecx, [ebp + 0x8004]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
cmp eax, dword [ebp + 0xe914]
jae 0x478672
mov esi, eax
mov edx, ecx
mov edi, edi
mov ebx, dword [edx - 4]
mov eax, ebx
mov edi, dword [edx]
mov ecx, edi
shl eax, 8
shl ecx, 8
mov eax, dword [eax + ebp + 0x6c]
cmp eax, dword [ecx + ebp + 0x6c]
jge 0x47866a
mov dword [edx - 4], edi
inc esi
mov dword [edx], ebx
add edx, 4
cmp esi, dword [ebp + 0xe914]
jb 0x478640
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
inc eax
add ecx, 4
mov dword [esp + 0x20], eax
dec eax
cmp eax, dword [ebp + 0xe914]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x1c], ecx
jb 0x478632
mov ecx, dword [ebp + 0xe90c]
pop edi
pop esi
pop ebx
test ecx, 0x400
je 0x4786df
mov eax, dword [ebp + 0xe984]
test eax, eax
jne 0x4786b9
or ecx, 0x200
mov dword [ebp + 0xe90c], ecx
xor eax, eax
pop ebp
add esp, 0x1c
ret
mov ecx, dword [ebp + 0xe91c]
cmp eax, ecx
jbe 0x4786d5
sub eax, ecx
mov dword [ebp + 0xe984], eax
mov eax, 1
pop ebp
add esp, 0x1c
ret
mov dword [ebp + 0xe984], 0
mov eax, 1
pop ebp
add esp, 0x1c
ret