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

Disassembly:
sub esp, 0x1c
push ebp
mov ebp, ecx
mov dword [esp + 0xc], ebp
call fcn.00476c40
test eax, eax
je 0x4784e2
inc dword [ebp + 0xe930]
mov ecx, dword [ebp + 0xe940]
test ecx, ecx
je 0x4784e2
mov eax, dword [ebp + 0xe96c]
xor edx, edx
imul eax, dword [0x15e3ce4]
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 0x47723b
mov esi, 0x1f
test byte [ebp + 0xe920], 0x20
je 0x477257
cmp dword [ebp + 0xe928], 0
je 0x477257
cmp esi, 6
jge 0x477257
mov esi, 6
mov ecx, dword [ebp + 0xe95c]
cmp ecx, 0x80
jle 0x47727b
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 [0x1655e64], 4
je 0x47728f
mov esi, dword [esi*4 + str.____hpx]
jmp 0x477296
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 0x4772b1
mov eax, 0x200
test dword [ebp + 0xe90c], 0x400
je 0x4772d7
mov ecx, dword [ebp + 0xe988]
test ecx, ecx
je 0x4772d7
push ecx
push dword [ebp + 0xe984]
push eax
call fcn.00478530
add esp, 0xc
shl eax, 7
xor edx, edx
div esi
mov ecx, eax
mov dword [esp + 0x20], ecx
cmp ecx, 0x180
jbe 0x4772f4
mov dword [esp + 0x20], 0x180
xor eax, eax
mov dword [ebp + 0xe914], 0
mov esi, ebp
mov dword [esp + 0x10], eax
jmp 0x477310
mov ebx, dword [esi + 0x24]
test ebx, 0x400
je 0x47733f
mov eax, dword [esi + 0x7c]
or eax, dword [esi + 0x14]
or eax, dword [esi + 0x10]
mov eax, dword [esp + 0x10]
jne 0x47733f
mov dword [esi + 0x20], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
test ebx, 0x100
jne 0x47840d
cmp eax, dword [ebp + 0xe910]
jb 0x47735d
cmp dword [esi + 0x20], 0
je 0x47840d
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 0x477396
mov dword [esi + 0x70], 0x100
cmp dword [esi + 0x80], 0
mov dword [esi + 0x5c], 0
je 0x477e45
cmp dword [esi + 0x20], 0
je 0x477e45
movsx edi, word [esi + 0xd0]
add edi, dword [esi + 0x74]
jns 0x4773c4
xor edi, edi
jmp 0x4773d1
cmp edi, 0x100
jle 0x4773d1
mov edi, 0x100
test ebx, 0x20000
je 0x47747d
mov ebx, dword [esi + 0xc8]
and ebx, 0x3f
test edi, edi
jle 0x47744a
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 0x477434
dec eax
je 0x47742a
dec eax
movzx eax, byte [esi + 0xe5]
je 0x477420
movsx edx, word [ebx*2 + 0x521a30]
jmp 0x477443
movsx edx, word [ebx*2 + 0x521bb0]
jmp 0x477443
movsx edx, word [ebx*2 + 0x521b30]
jmp 0x47743c
movsx edx, word [ebx*2 + 0x521ab0]
movzx eax, byte [esi + 0xe5]
imul edx, eax
sar edx, cl
add edi, edx
cmp dword [ebp + 0xe92c], 0
jne 0x477468
test dword [ebp + 0xe920], 0x122
je 0x47747a
test byte [ebp + 0xe90c], 4
jne 0x47747a
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 0x4774e3
movzx ecx, byte [esi + 0xf3]
mov edx, ecx
and ecx, 0xf
shr edx, 4
add ecx, edx
test byte [ebp + 0xe920], 0x20
je 0x4774a9
test byte [ebp + 0xe90c], 4
je 0x4774ad
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 0x4774cc
test byte [ebp + 0xe920], 0x22
je 0x4774da
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 0x4774eb
xor edi, edi
jmp 0x4774f8
cmp edi, 0x100
jle 0x4774f8
mov edi, 0x100
mov eax, dword [esi + 0x8c]
shl edi, 6
test eax, eax
je 0x477840
mov edx, dword [esi + 0x24]
test edx, 0x200000
je 0x477611
mov cl, byte [eax + 0x22c]
test cl, cl
je 0x477611
mov eax, dword [esi + 0x94]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x1c], eax
dec ebx
je 0x477556
mov ecx, dword [esi + 0x8c]
add ecx, 0xc
movzx eax, word [ecx]
cmp dword [esp + 0x1c], eax
jle 0x477554
inc edx
add ecx, 2
cmp edx, ebx
jb 0x477541
jmp 0x477556
mov ebx, edx
mov ecx, dword [esi + 0x8c]
mov eax, dword [esp + 0x1c]
movzx edx, word [ecx + ebx*2 + 0xc]
cmp eax, edx
jl 0x47757e
movzx ecx, byte [ebx + ecx + 0xcc]
mov ebp, dword [esp + 0x18]
shl ecx, 2
mov dword [esp + 0x14], edx
jmp 0x4775a8
test ebx, ebx
je 0x4775a2
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 0x4775a8
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp eax, edx
jle 0x4775b2
mov eax, edx
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x14]
jle 0x4775eb
cmp eax, dword [esp + 0x14]
jle 0x4775eb
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 0x4775f3
xor ecx, ecx
jmp 0x477600
cmp ecx, 0x100
jle 0x477600
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 0x477719
mov cl, byte [eax + 0x22d]
test cl, cl
je 0x477719
mov eax, dword [esi + 0x98]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x14], eax
dec ebx
je 0x47765b
mov ecx, dword [esi + 0x8c]
add ecx, 0x4c
movzx eax, word [ecx]
cmp dword [esp + 0x14], eax
jle 0x477659
inc edx
add ecx, 2
cmp edx, ebx
jb 0x477646
jmp 0x47765b
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 0x4776c0
test ebx, ebx
je 0x477697
mov eax, dword [esi + 0x8c]
movzx ecx, byte [ebx + eax + 0xeb]
movzx eax, word [eax + ebx*2 + 0x4a]
jmp 0x47769e
mov ecx, pe_nt_image_headers32
xor eax, eax
cmp dword [esp + 0x1c], eax
jle 0x4776c0
cmp edx, eax
jle 0x4776c0
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 0x4776c8
xor ecx, ecx
jmp 0x4776d2
cmp ecx, 0x40
jle 0x4776d2
mov ecx, 0x40
mov ebx, dword [esp + 0x28]
cmp ebx, 0x80
jl 0x4776ed
mov eax, 0x100
add ecx, 0xffffffe0
sub eax, ebx
imul eax, ecx
jmp 0x4776f3
lea eax, [ecx - 0x20]
imul eax, ebx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add ebx, eax
test ebx, ebx
jns 0x477706
xor ebx, ebx
jmp 0x477713
cmp ebx, 0x100
jle 0x477713
mov ebx, 0x100
mov edx, dword [esi + 0x24]
mov dword [esi + 0x70], ebx
mov ecx, dword [esi + 0x8c]
test edx, 0x400
je 0x477755
mov eax, dword [ecx]
test eax, eax
je 0x47774c
add eax, eax
sub dword [esi + 0x7c], eax
cmp dword [esi + 0x7c], 0
jg 0x47773f
mov dword [esi + 0x7c], 0
mov eax, dword [esi + 0x7c]
imul eax, edi
sar eax, 0x10
mov edi, eax
jmp 0x477755
mov eax, dword [esi + 0x7c]
neg eax
sbb eax, eax
and edi, eax
mov dl, byte [ecx + 0x247]
test dl, dl
je 0x4777a3
mov ebx, dword [esi + 0x70]
test ebx, ebx
je 0x4777a3
mov al, byte [esi + 0xd4]
test al, al
je 0x4777a3
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 0x477794
xor eax, eax
jmp 0x4777a0
cmp eax, 0x100
jle 0x4777a0
mov eax, 0x100
mov dword [esi + 0x70], eax
test edi, edi
je 0x4777cf
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.00478530
add esp, 0xc
mov dword [esi + 0x6c], eax
mov eax, dword [ebp + 0xe974]
cmp dword [esi + 0x80], eax
jge 0x4777e3
mov dword [esi + 0x80], eax
mov eax, dword [esi + 0x24]
mov ebx, dword [esi + 0x80]
and eax, 0x180000
cmp eax, 0x180000
jne 0x477816
push dword [esi + 0x84]
mov ecx, ebp
push dword [esi + 0xb0]
push ebx
call fcn.00473780
push eax
mov ecx, ebp
call fcn.00473990
mov ebx, eax
cmp byte [esi + 0xd8], 1
jne 0x477882
mov eax, dword [ebp + 0xe92c]
xor edx, edx
mov ecx, 3
div ecx
dec edx
je 0x477859
dec edx
jne 0x477882
movzx ecx, byte [esi + 0xd9]
and ecx, 0xf
jmp 0x477863
test dword [esi + 0x24], 0x400
je 0x4777a3
mov dword [esi + 0x7c], 0
jmp 0x4777cf
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.00473990
mov ebx, eax
test dword [ebp + 0xe90c], 0x10000
je 0x4778aa
cmp ebx, 0x1c4
jge 0x47789d
mov ebx, 0x1c4
jmp 0x4778aa
cmp ebx, 0xd60
jle 0x4778aa
mov ebx, 0xd60
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x477a37
mov ecx, dword [esi + 0x24]
test ecx, 0x800000
je 0x477a37
cmp byte [eax + 0x22e], 0
je 0x477a37
movzx edi, byte [eax + 0x22e]
xor ecx, ecx
mov edx, dword [esi + 0x9c]
mov dword [esp + 0x1c], edx
dec edi
je 0x47790b
mov edx, eax
add edx, 0x8c
movzx eax, word [edx]
cmp dword [esp + 0x1c], eax
jle 0x477905
inc ecx
add edx, 2
cmp ecx, edi
jb 0x4778f2
jmp 0x477907
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 0x477940
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 0x47796d
test edi, edi
je 0x477967
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 0x47796d
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp edx, dword [esp + 0x1c]
jle 0x477977
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x18]
jle 0x4779b0
cmp edx, dword [esp + 0x14]
jle 0x4779b0
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 0x4779bf
mov ecx, 0xffffff00
jmp 0x4779cc
cmp ecx, 0x100
jle 0x4779cc
mov ecx, 0x100
mov eax, dword [esi + 0x8c]
test dword [eax + 4], 0x400
je 0x4779f2
mov eax, dword [esi + 0x24]
shr eax, 0xe
push ecx
not eax
mov ecx, ebp
and eax, 1
push eax
push esi
call fcn.00488150
jmp 0x477a37
test ecx, ecx
jns 0x477a13
neg ecx
cmp ecx, 0xff
jle 0x477a05
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x521db0]
jmp 0x477a2c
cmp ecx, 0xff
jle 0x477a20
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x5221b0]
push ebx
call fcn.00478530
mov ebx, eax
add esp, 0xc
test dword [esi + 0x24], 0x10000
je 0x477b78
movzx eax, byte [esi + 0xe0]
mov edx, dword [esi + 0xc4]
and eax, 3
mov dword [esp + 0x1c], edx
dec eax
je 0x477a7f
dec eax
je 0x477a75
dec eax
je 0x477a6b
movsx eax, word [edx*2 + 0x521a30]
jmp 0x477a87
movsx eax, word [edx*2 + 0x521bb0]
jmp 0x477a87
movsx eax, word [edx*2 + 0x521b30]
jmp 0x477a87
movsx eax, word [edx*2 + 0x521ab0]
cmp dword [ebp + 0xe920], 0x20
jne 0x477a9e
test byte [ebp + 0xe90c], 4
mov ecx, 7
je 0x477aa3
mov ecx, 6
movzx edi, byte [esi + 0xe2]
imul edi, eax
sar edi, cl
test byte [ebp + 0xe90c], 0x10
je 0x477b49
test byte [ebp + 0xe920], 0x20
je 0x477b49
mov dword [esp + 0x28], edi
push 0x10000
test edi, edi
jns 0x477b0c
neg edi
mov eax, edi
mov dword [esp + 0x2c], edi
sar eax, 2
push dword [eax*4 + 0x5221b0]
push ebx
call fcn.00478530
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x477b45
push 0x10000
push dword [eax*4 + 0x521d70]
jmp 0x477b38
sar edi, 2
push dword [edi*4 + 0x521db0]
push ebx
call fcn.00478530
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x477b45
push 0x10000
push dword [eax*4 + 0x521d30]
push ebx
call fcn.00478530
sub eax, ebx
add esp, 0xc
add edi, eax
mov edx, dword [esp + 0x1c]
add ebx, edi
cmp dword [ebp + 0xe92c], 0
jne 0x477b66
test byte [ebp + 0xe920], 0x20
je 0x477b78
test byte [ebp + 0xe90c], 4
jne 0x477b78
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 0x477c09
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 0x477bc7
dec eax
je 0x477bbd
dec eax
je 0x477bb3
movsx ecx, word [ecx*2 + 0x521a30]
jmp 0x477bcf
movsx ecx, word [ecx*2 + 0x521bb0]
jmp 0x477bcf
movsx ecx, word [ecx*2 + 0x521b30]
jmp 0x477bcf
movsx ecx, word [ecx*2 + 0x521ab0]
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 0x477bf7
xor eax, eax
jmp 0x477c03
cmp eax, 0x100
jle 0x477c03
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 0x477d6f
cmp byte [edi + 0x28], al
je 0x477d6f
mov cl, byte [edi + 0x27]
test cl, cl
jne 0x477c3c
movzx eax, byte [edi + 0x28]
shl eax, 8
mov dword [esi + 0xbc], eax
jmp 0x477c82
test byte [ebp + 0xe920], 0x20
je 0x477c4d
movzx eax, cl
shl eax, 3
jmp 0x477c62
test edx, 0x200
jne 0x477c68
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 0x477c82
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.0x477c9c
jmp dword [eax*4 + 0x47851c]
mov eax, ecx
and eax, 0x3f
movsx edx, word [eax*2 + 0x521bb0]
lea eax, [ecx + 1]
mov dword [esi + 0xc0], eax
jmp 0x477cfa
shr ecx, 1
mov edx, 0xffffffc0
sub edx, ecx
and edx, 0x7f
sub edx, 0x40
jmp 0x477cfa
mov edx, ecx
shr edx, 1
sub edx, 0x40
and edx, 0x7f
sub edx, 0x40
jmp 0x477cfa
and cl, 0x80
movzx edx, cl
neg edx
sbb edx, edx
and edx, 0x80
add edx, 0xffffffc0
jmp 0x477cfa
movzx eax, cl
movsx edx, byte [eax + 0x521c30]
mov ecx, dword [esi + 0xbc]
imul ecx, edx
sar ecx, 8
test byte [ebp + 0xe920], 0x20
je 0x477d66
test ecx, ecx
jns 0x477d2a
neg ecx
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x521db0]
mov eax, dword [eax*4 + 0x521db4]
jmp 0x477d3d
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x5221b0]
mov eax, dword [eax*4 + 0x5221b4]
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.00478530
mov ebx, eax
add esp, 0xc
movzx eax, bl
sar ebx, 8
jmp 0x477d6f
mov eax, dword [esp + 0x28]
sar ecx, 6
add ebx, ecx
cmp ebx, dword [ebp + 0xe974]
jg 0x477d8d
test byte [ebp + 0xe920], 2
je 0x477d87
mov dword [esi + 0x20], 0
mov ebx, dword [ebp + 0xe974]
cmp ebx, dword [ebp + 0xe978]
jle 0x477dc3
test byte [ebp + 0xe920], 0x20
jne 0x477da6
cmp ebx, 0x100000
jl 0x477dbb
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.00472e50
test byte [ebp + 0xe920], 0x20
je 0x477df7
cmp eax, 0x100
jae 0x477df7
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
push dword [0x15e3ce4]
push 0x10000
push eax
call fcn.00478530
add esp, 0xc
lea ecx, [eax - 0xffb0]
cmp ecx, 0xe0
ja 0x477e1e
mov eax, 0x10000
mov ecx, dword [ebp + 0xe968]
cmp ecx, 0x80
je 0x477e32
imul eax, ecx
shr eax, 7
cmp eax, 0xff0000
jbe 0x477e3e
mov eax, 0xff0000
inc eax
and eax, 0xfffffffc
mov dword [esi + 0xc], eax
mov edx, dword [esi + 0x8c]
test edx, edx
je 0x4780ca
mov edi, dword [esi + 0x24]
test edi, 0x200000
je 0x477f99
inc dword [esi + 0x94]
test byte [edx + 4], 4
je 0x477ee3
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x230]
movzx eax, word [edx + eax*2 + 0xc]
je 0x477e84
inc eax
cmp dword [esi + 0x94], eax
jne 0x477ee3
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 0x477ee3
movzx eax, al
cmp byte [eax + edx + 0xcc], 0
jne 0x477ee3
test byte [ebp + 0xe920], 4
je 0x477ed3
movzx ecx, byte [edx + 0x22c]
movzx eax, bl
inc eax
cmp eax, ecx
jne 0x477ee3
or edi, 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x24], edi
test byte [edx + 4], 2
je 0x477f1f
test dword [esi + 0x24], 0x200
jne 0x477f1f
movzx eax, byte [edx + 0x232]
movzx eax, word [edx + eax*2 + 0xc]
inc eax
cmp dword [esi + 0x94], eax
jne 0x477f99
movzx eax, byte [edx + 0x231]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
jmp 0x477f99
movzx eax, byte [edx + 0x22c]
movzx eax, word [edx + eax*2 + 0xa]
cmp dword [esi + 0x94], eax
jbe 0x477f99
test byte [ebp + 0xe920], 0x20
jne 0x477f45
test dword [esi + 0x24], 0x200
je 0x477f4c
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 0x477f99
mov eax, dword [esp + 0x10]
cmp eax, dword [ebp + 0xe910]
jae 0x477f84
test byte [ebp + 0xe920], 0x20
je 0x477f99
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
mov ecx, dword [esi + 0x24]
test ecx, 0x400000
je 0x47802f
inc dword [esi + 0x98]
test byte [edx + 4], 0x20
je 0x477fe4
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x234]
movzx eax, word [edx + eax*2 + 0x4c]
je 0x477fca
inc eax
cmp dword [esi + 0x98], eax
jne 0x477fe4
movzx eax, byte [edx + 0x233]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], eax
test byte [edx + 4], 0x10
je 0x478015
movzx eax, byte [edx + 0x236]
movzx eax, word [edx + eax*2 + 0x4c]
inc eax
cmp dword [esi + 0x98], eax
jne 0x478015
test ecx, 0x200
jne 0x478015
movzx eax, byte [edx + 0x235]
movzx eax, word [edx + eax*2 + 0x4c]
jmp 0x478029
movzx eax, byte [edx + 0x22d]
movzx eax, word [edx + eax*2 + 0x4a]
cmp dword [esi + 0x98], eax
jbe 0x47802f
mov dword [esi + 0x98], eax
test ecx, 0x800000
je 0x4780ca
inc dword [esi + 0x9c]
test dword [edx + 4], 0x100
je 0x478076
movzx eax, byte [edx + 0x238]
movzx eax, word [edx + eax*2 + 0x8c]
cmp dword [esi + 0x9c], eax
jb 0x478076
movzx eax, byte [edx + 0x237]
movzx eax, word [edx + eax*2 + 0x8c]
mov dword [esi + 0x9c], eax
test byte [edx + 4], 0x80
je 0x4780ad
test ecx, 0x200
jne 0x4780ad
movzx eax, byte [edx + 0x23a]
movzx eax, word [edx + eax*2 + 0x8c]
inc eax
cmp dword [esi + 0x9c], eax
jne 0x4780ca
movzx eax, byte [edx + 0x239]
movzx eax, word [edx + eax*2 + 0x8c]
jmp 0x4780c4
movzx eax, byte [edx + 0x22e]
movzx eax, word [edx + eax*2 + 0x8a]
cmp dword [esi + 0x9c], eax
jbe 0x4780ca
mov dword [esi + 0x9c], eax
and dword [esi + 0x24], 0xffff7fff
mov edi, dword [esi + 0x6c]
test edi, edi
jne 0x4780e2
cmp dword [esi + 0x14], edi
jne 0x4780e2
cmp dword [esi + 0x10], edi
je 0x4780e9
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 0x478100
and dword [esi + 0x24], 0xfffffffd
mov eax, dword [esi + 0x60]
mov dword [esi + 0x68], 0
mov dword [esi + 0x64], 0
test eax, eax
je 0x47811f
cmp dword [esi + 0x20], 0
je 0x47811f
test ebx, ebx
jne 0x478121
xor eax, eax
mov dword [esi], eax
test eax, eax
je 0x4783dc
cmp dword [0x15e3cec], 2
jb 0x4781c7
mov eax, dword [esi + 0x70]
add eax, 0xffffff80
imul eax, dword [0x15e3cd8]
cdq
and edx, 0x7f
lea ecx, [edx + eax]
sar ecx, 7
add ecx, 0x80
jns 0x47815b
xor ecx, ecx
jmp 0x478168
cmp ecx, 0x100
jle 0x478168
mov ecx, 0x100
mov edx, dword [0x1655e64]
test dl, 1
je 0x47817c
mov eax, 0x100
sub eax, ecx
mov ecx, eax
imul edi, dword [esp + 0x20]
shr edi, 7
mov eax, edi
test edx, 0x200
je 0x4781ac
cmp ecx, 0x80
jge 0x4781a7
imul eax, ecx
shl edi, 7
sar eax, 8
mov dword [esi + 0x68], eax
sar edi, 8
jmp 0x4781d2
shl eax, 7
jmp 0x4781af
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 0x4781d5
imul edi, dword [esp + 0x20]
shr edi, 8
mov dword [esi + 0x68], edi
mov dword [esi + 0x64], edi
cmp dword [esi + 0x64], 0xffff
jle 0x4781e5
mov dword [esi + 0x64], 0xffff
cmp dword [esi + 0x68], 0xffff
jle 0x4781f5
mov dword [esi + 0x68], 0xffff
test byte [0x1655e64], 8
je 0x478207
or dword [esi + 0x24], 0x1000
jmp 0x47823c
and dword [esi + 0x24], 0xffffcfff
mov eax, dword [esi + 0x24]
cmp ebx, 0x10000
je 0x478234
mov ecx, dword [0x1655e64]
test cl, 0x10
jne 0x47823c
test ecx, 0x400
jne 0x47823c
cmp ebx, 0xff00
jl 0x47823c
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 0x478275
cmp dword [0x15e3cec], 2
ja 0x478275
neg eax
mov dword [esi + 0x68], eax
test cl, cl
jns 0x47827e
neg ebx
mov dword [esi + 0xc], ebx
test ecx, 0x8000
je 0x478391
mov edx, dword [esi + 0x10]
cmp edx, edi
jne 0x47829d
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x68]
je 0x478391
mov eax, dword [esi + 0x64]
mov ebx, eax
mov ebp, dword [esi + 0x14]
sub ebx, edx
mov edi, dword [0x15e3cf4]
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 [0x1655e64], 0x10000
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], edi
jne 0x4782f3
test byte [0x1655e60], 9
je 0x47832f
test byte [0x1655e64], 0x10
je 0x47832f
cmp dword [0x1655e6c], 0x14
ja 0x47832f
or edx, dword [esi + 0x14]
je 0x47832f
or eax, ebx
je 0x47832f
test ecx, 0x1000000
jne 0x47832f
mov edi, dword [ebp + 0xe91c]
mov dword [esp + 0x14], edi
cmp edi, 0x800
jle 0x47831f
mov edi, 0x800
mov dword [esp + 0x14], edi
mov ecx, dword [0x15e3cf4]
cmp edi, ecx
jge 0x47832f
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 0x47837a
mov eax, dword [esp + 0x14]
mov dword [esi + 0x5c], eax
jmp 0x4783a3
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 0x4783a3
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 0x47842d
mov eax, ecx
jmp 0x478417
cmp dword [esi + 0xa4], 0xff
jbe 0x4783f2
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 0x478417
mov dword [esi + 0xa4], 0
inc eax
add esi, 0x100
mov dword [esp + 0x10], eax
cmp eax, 0x80
jb 0x477310
mov eax, dword [ebp + 0xe914]
cmp eax, dword [0x15e3cdc]
jb 0x4784bb
test dword [0x1655e64], 0x10000
jne 0x4784bb
test eax, eax
je 0x4784bb
mov eax, 1
lea ecx, [ebp + 0x8004]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
cmp eax, dword [ebp + 0xe914]
jae 0x4784a2
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 0x47849a
mov dword [edx - 4], edi
inc esi
mov dword [edx], ebx
add edx, 4
cmp esi, dword [ebp + 0xe914]
jb 0x478470
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 0x478462
mov ecx, dword [ebp + 0xe90c]
pop edi
pop esi
pop ebx
test ecx, 0x400
je 0x47850f
mov eax, dword [ebp + 0xe984]
test eax, eax
jne 0x4784e9
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 0x478505
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