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

Disassembly:
sub esp, 0x1c
push ebp
mov ebp, ecx
mov dword [esp + 0xc], ebp
call fcn.00477c70
test eax, eax
je 0x479512
inc dword [ebp + 0xe930]
mov ecx, dword [ebp + 0xe940]
test ecx, ecx
je 0x479512
mov eax, dword [ebp + 0xe96c]
xor edx, edx
imul eax, dword [0x15e4e34]
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 0x47826b
mov esi, 0x1f
test byte [ebp + 0xe920], 0x20
je 0x478287
cmp dword [ebp + 0xe928], 0
je 0x478287
cmp esi, 6
jge 0x478287
mov esi, 6
mov ecx, dword [ebp + 0xe95c]
cmp ecx, 0x80
jle 0x4782ab
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 [0x1656fbc], 4
je 0x4782bf
mov esi, dword [esi*4 + str.____hpx]
jmp 0x4782c6
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 0x4782e1
mov eax, 0x200
test dword [ebp + 0xe90c], 0x400
je 0x478307
mov ecx, dword [ebp + 0xe988]
test ecx, ecx
je 0x478307
push ecx
push dword [ebp + 0xe984]
push eax
call fcn.00479560
add esp, 0xc
shl eax, 7
xor edx, edx
div esi
mov ecx, eax
mov dword [esp + 0x20], ecx
cmp ecx, 0x180
jbe 0x478324
mov dword [esp + 0x20], 0x180
xor eax, eax
mov dword [ebp + 0xe914], 0
mov esi, ebp
mov dword [esp + 0x10], eax
jmp 0x478340
mov ebx, dword [esi + 0x24]
test ebx, 0x400
je 0x47836f
mov eax, dword [esi + 0x7c]
or eax, dword [esi + 0x14]
or eax, dword [esi + 0x10]
mov eax, dword [esp + 0x10]
jne 0x47836f
mov dword [esi + 0x20], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
test ebx, 0x100
jne 0x47943d
cmp eax, dword [ebp + 0xe910]
jb 0x47838d
cmp dword [esi + 0x20], 0
je 0x47943d
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 0x4783c6
mov dword [esi + 0x70], 0x100
cmp dword [esi + 0x80], 0
mov dword [esi + 0x5c], 0
je 0x478e75
cmp dword [esi + 0x20], 0
je 0x478e75
movsx edi, word [esi + 0xd0]
add edi, dword [esi + 0x74]
jns 0x4783f4
xor edi, edi
jmp 0x478401
cmp edi, 0x100
jle 0x478401
mov edi, 0x100
test ebx, 0x20000
je 0x4784ad
mov ebx, dword [esi + 0xc8]
and ebx, 0x3f
test edi, edi
jle 0x47847a
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 0x478464
dec eax
je 0x47845a
dec eax
movzx eax, byte [esi + 0xe5]
je 0x478450
movsx edx, word [ebx*2 + 0x522a30]
jmp 0x478473
movsx edx, word [ebx*2 + 0x522bb0]
jmp 0x478473
movsx edx, word [ebx*2 + 0x522b30]
jmp 0x47846c
movsx edx, word [ebx*2 + 0x522ab0]
movzx eax, byte [esi + 0xe5]
imul edx, eax
sar edx, cl
add edi, edx
cmp dword [ebp + 0xe92c], 0
jne 0x478498
test dword [ebp + 0xe920], 0x122
je 0x4784aa
test byte [ebp + 0xe90c], 4
jne 0x4784aa
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 0x478513
movzx ecx, byte [esi + 0xf3]
mov edx, ecx
and ecx, 0xf
shr edx, 4
add ecx, edx
test byte [ebp + 0xe920], 0x20
je 0x4784d9
test byte [ebp + 0xe90c], 4
je 0x4784dd
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 0x4784fc
test byte [ebp + 0xe920], 0x22
je 0x47850a
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 0x47851b
xor edi, edi
jmp 0x478528
cmp edi, 0x100
jle 0x478528
mov edi, 0x100
mov eax, dword [esi + 0x8c]
shl edi, 6
test eax, eax
je 0x478870
mov edx, dword [esi + 0x24]
test edx, 0x200000
je 0x478641
mov cl, byte [eax + 0x22c]
test cl, cl
je 0x478641
mov eax, dword [esi + 0x94]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x1c], eax
dec ebx
je 0x478586
mov ecx, dword [esi + 0x8c]
add ecx, 0xc
movzx eax, word [ecx]
cmp dword [esp + 0x1c], eax
jle 0x478584
inc edx
add ecx, 2
cmp edx, ebx
jb 0x478571
jmp 0x478586
mov ebx, edx
mov ecx, dword [esi + 0x8c]
mov eax, dword [esp + 0x1c]
movzx edx, word [ecx + ebx*2 + 0xc]
cmp eax, edx
jl 0x4785ae
movzx ecx, byte [ebx + ecx + 0xcc]
mov ebp, dword [esp + 0x18]
shl ecx, 2
mov dword [esp + 0x14], edx
jmp 0x4785d8
test ebx, ebx
je 0x4785d2
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 0x4785d8
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp eax, edx
jle 0x4785e2
mov eax, edx
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x14]
jle 0x47861b
cmp eax, dword [esp + 0x14]
jle 0x47861b
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 0x478623
xor ecx, ecx
jmp 0x478630
cmp ecx, 0x100
jle 0x478630
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 0x478749
mov cl, byte [eax + 0x22d]
test cl, cl
je 0x478749
mov eax, dword [esi + 0x98]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x14], eax
dec ebx
je 0x47868b
mov ecx, dword [esi + 0x8c]
add ecx, 0x4c
movzx eax, word [ecx]
cmp dword [esp + 0x14], eax
jle 0x478689
inc edx
add ecx, 2
cmp edx, ebx
jb 0x478676
jmp 0x47868b
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 0x4786f0
test ebx, ebx
je 0x4786c7
mov eax, dword [esi + 0x8c]
movzx ecx, byte [ebx + eax + 0xeb]
movzx eax, word [eax + ebx*2 + 0x4a]
jmp 0x4786ce
mov ecx, pe_nt_image_headers32
xor eax, eax
cmp dword [esp + 0x1c], eax
jle 0x4786f0
cmp edx, eax
jle 0x4786f0
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 0x4786f8
xor ecx, ecx
jmp 0x478702
cmp ecx, 0x40
jle 0x478702
mov ecx, 0x40
mov ebx, dword [esp + 0x28]
cmp ebx, 0x80
jl 0x47871d
mov eax, 0x100
add ecx, 0xffffffe0
sub eax, ebx
imul eax, ecx
jmp 0x478723
lea eax, [ecx - 0x20]
imul eax, ebx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add ebx, eax
test ebx, ebx
jns 0x478736
xor ebx, ebx
jmp 0x478743
cmp ebx, 0x100
jle 0x478743
mov ebx, 0x100
mov edx, dword [esi + 0x24]
mov dword [esi + 0x70], ebx
mov ecx, dword [esi + 0x8c]
test edx, 0x400
je 0x478785
mov eax, dword [ecx]
test eax, eax
je 0x47877c
add eax, eax
sub dword [esi + 0x7c], eax
cmp dword [esi + 0x7c], 0
jg 0x47876f
mov dword [esi + 0x7c], 0
mov eax, dword [esi + 0x7c]
imul eax, edi
sar eax, 0x10
mov edi, eax
jmp 0x478785
mov eax, dword [esi + 0x7c]
neg eax
sbb eax, eax
and edi, eax
mov dl, byte [ecx + 0x247]
test dl, dl
je 0x4787d3
mov ebx, dword [esi + 0x70]
test ebx, ebx
je 0x4787d3
mov al, byte [esi + 0xd4]
test al, al
je 0x4787d3
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 0x4787c4
xor eax, eax
jmp 0x4787d0
cmp eax, 0x100
jle 0x4787d0
mov eax, 0x100
mov dword [esi + 0x70], eax
test edi, edi
je 0x4787ff
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.00479560
add esp, 0xc
mov dword [esi + 0x6c], eax
mov eax, dword [ebp + 0xe974]
cmp dword [esi + 0x80], eax
jge 0x478813
mov dword [esi + 0x80], eax
mov eax, dword [esi + 0x24]
mov ebx, dword [esi + 0x80]
and eax, 0x180000
cmp eax, 0x180000
jne 0x478846
push dword [esi + 0x84]
mov ecx, ebp
push dword [esi + 0xb0]
push ebx
call fcn.004747b0
push eax
mov ecx, ebp
call fcn.004749c0
mov ebx, eax
cmp byte [esi + 0xd8], 1
jne 0x4788b2
mov eax, dword [ebp + 0xe92c]
xor edx, edx
mov ecx, 3
div ecx
dec edx
je 0x478889
dec edx
jne 0x4788b2
movzx ecx, byte [esi + 0xd9]
and ecx, 0xf
jmp 0x478893
test dword [esi + 0x24], 0x400
je 0x4787d3
mov dword [esi + 0x7c], 0
jmp 0x4787ff
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.004749c0
mov ebx, eax
test dword [ebp + 0xe90c], 0x10000
je 0x4788da
cmp ebx, 0x1c4
jge 0x4788cd
mov ebx, 0x1c4
jmp 0x4788da
cmp ebx, 0xd60
jle 0x4788da
mov ebx, 0xd60
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x478a67
mov ecx, dword [esi + 0x24]
test ecx, 0x800000
je 0x478a67
cmp byte [eax + 0x22e], 0
je 0x478a67
movzx edi, byte [eax + 0x22e]
xor ecx, ecx
mov edx, dword [esi + 0x9c]
mov dword [esp + 0x1c], edx
dec edi
je 0x47893b
mov edx, eax
add edx, 0x8c
movzx eax, word [edx]
cmp dword [esp + 0x1c], eax
jle 0x478935
inc ecx
add edx, 2
cmp ecx, edi
jb 0x478922
jmp 0x478937
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 0x478970
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 0x47899d
test edi, edi
je 0x478997
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 0x47899d
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp edx, dword [esp + 0x1c]
jle 0x4789a7
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x18]
jle 0x4789e0
cmp edx, dword [esp + 0x14]
jle 0x4789e0
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 0x4789ef
mov ecx, 0xffffff00
jmp 0x4789fc
cmp ecx, 0x100
jle 0x4789fc
mov ecx, 0x100
mov eax, dword [esi + 0x8c]
test dword [eax + 4], 0x400
je 0x478a22
mov eax, dword [esi + 0x24]
shr eax, 0xe
push ecx
not eax
mov ecx, ebp
and eax, 1
push eax
push esi
call fcn.00489180
jmp 0x478a67
test ecx, ecx
jns 0x478a43
neg ecx
cmp ecx, 0xff
jle 0x478a35
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x522db0]
jmp 0x478a5c
cmp ecx, 0xff
jle 0x478a50
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x5231b0]
push ebx
call fcn.00479560
mov ebx, eax
add esp, 0xc
test dword [esi + 0x24], 0x10000
je 0x478ba8
movzx eax, byte [esi + 0xe0]
mov edx, dword [esi + 0xc4]
and eax, 3
mov dword [esp + 0x1c], edx
dec eax
je 0x478aaf
dec eax
je 0x478aa5
dec eax
je 0x478a9b
movsx eax, word [edx*2 + 0x522a30]
jmp 0x478ab7
movsx eax, word [edx*2 + 0x522bb0]
jmp 0x478ab7
movsx eax, word [edx*2 + 0x522b30]
jmp 0x478ab7
movsx eax, word [edx*2 + 0x522ab0]
cmp dword [ebp + 0xe920], 0x20
jne 0x478ace
test byte [ebp + 0xe90c], 4
mov ecx, 7
je 0x478ad3
mov ecx, 6
movzx edi, byte [esi + 0xe2]
imul edi, eax
sar edi, cl
test byte [ebp + 0xe90c], 0x10
je 0x478b79
test byte [ebp + 0xe920], 0x20
je 0x478b79
mov dword [esp + 0x28], edi
push 0x10000
test edi, edi
jns 0x478b3c
neg edi
mov eax, edi
mov dword [esp + 0x2c], edi
sar eax, 2
push dword [eax*4 + 0x5231b0]
push ebx
call fcn.00479560
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x478b75
push 0x10000
push dword [eax*4 + 0x522d70]
jmp 0x478b68
sar edi, 2
push dword [edi*4 + 0x522db0]
push ebx
call fcn.00479560
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x478b75
push 0x10000
push dword [eax*4 + 0x522d30]
push ebx
call fcn.00479560
sub eax, ebx
add esp, 0xc
add edi, eax
mov edx, dword [esp + 0x1c]
add ebx, edi
cmp dword [ebp + 0xe92c], 0
jne 0x478b96
test byte [ebp + 0xe920], 0x20
je 0x478ba8
test byte [ebp + 0xe90c], 4
jne 0x478ba8
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 0x478c39
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 0x478bf7
dec eax
je 0x478bed
dec eax
je 0x478be3
movsx ecx, word [ecx*2 + 0x522a30]
jmp 0x478bff
movsx ecx, word [ecx*2 + 0x522bb0]
jmp 0x478bff
movsx ecx, word [ecx*2 + 0x522b30]
jmp 0x478bff
movsx ecx, word [ecx*2 + 0x522ab0]
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 0x478c27
xor eax, eax
jmp 0x478c33
cmp eax, 0x100
jle 0x478c33
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 0x478d9f
cmp byte [edi + 0x28], al
je 0x478d9f
mov cl, byte [edi + 0x27]
test cl, cl
jne 0x478c6c
movzx eax, byte [edi + 0x28]
shl eax, 8
mov dword [esi + 0xbc], eax
jmp 0x478cb2
test byte [ebp + 0xe920], 0x20
je 0x478c7d
movzx eax, cl
shl eax, 3
jmp 0x478c92
test edx, 0x200
jne 0x478c98
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 0x478cb2
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.0x478ccc
jmp dword [eax*4 + 0x47954c]
mov eax, ecx
and eax, 0x3f
movsx edx, word [eax*2 + 0x522bb0]
lea eax, [ecx + 1]
mov dword [esi + 0xc0], eax
jmp 0x478d2a
shr ecx, 1
mov edx, 0xffffffc0
sub edx, ecx
and edx, 0x7f
sub edx, 0x40
jmp 0x478d2a
mov edx, ecx
shr edx, 1
sub edx, 0x40
and edx, 0x7f
sub edx, 0x40
jmp 0x478d2a
and cl, 0x80
movzx edx, cl
neg edx
sbb edx, edx
and edx, 0x80
add edx, 0xffffffc0
jmp 0x478d2a
movzx eax, cl
movsx edx, byte [eax + 0x522c30]
mov ecx, dword [esi + 0xbc]
imul ecx, edx
sar ecx, 8
test byte [ebp + 0xe920], 0x20
je 0x478d96
test ecx, ecx
jns 0x478d5a
neg ecx
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x522db0]
mov eax, dword [eax*4 + 0x522db4]
jmp 0x478d6d
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x5231b0]
mov eax, dword [eax*4 + 0x5231b4]
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.00479560
mov ebx, eax
add esp, 0xc
movzx eax, bl
sar ebx, 8
jmp 0x478d9f
mov eax, dword [esp + 0x28]
sar ecx, 6
add ebx, ecx
cmp ebx, dword [ebp + 0xe974]
jg 0x478dbd
test byte [ebp + 0xe920], 2
je 0x478db7
mov dword [esi + 0x20], 0
mov ebx, dword [ebp + 0xe974]
cmp ebx, dword [ebp + 0xe978]
jle 0x478df3
test byte [ebp + 0xe920], 0x20
jne 0x478dd6
cmp ebx, 0x100000
jl 0x478deb
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.00473e80
test byte [ebp + 0xe920], 0x20
je 0x478e27
cmp eax, 0x100
jae 0x478e27
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
push dword [0x15e4e34]
push 0x10000
push eax
call fcn.00479560
add esp, 0xc
lea ecx, [eax - 0xffb0]
cmp ecx, 0xe0
ja 0x478e4e
mov eax, 0x10000
mov ecx, dword [ebp + 0xe968]
cmp ecx, 0x80
je 0x478e62
imul eax, ecx
shr eax, 7
cmp eax, 0xff0000
jbe 0x478e6e
mov eax, 0xff0000
inc eax
and eax, 0xfffffffc
mov dword [esi + 0xc], eax
mov edx, dword [esi + 0x8c]
test edx, edx
je 0x4790fa
mov edi, dword [esi + 0x24]
test edi, 0x200000
je 0x478fc9
inc dword [esi + 0x94]
test byte [edx + 4], 4
je 0x478f13
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x230]
movzx eax, word [edx + eax*2 + 0xc]
je 0x478eb4
inc eax
cmp dword [esi + 0x94], eax
jne 0x478f13
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 0x478f13
movzx eax, al
cmp byte [eax + edx + 0xcc], 0
jne 0x478f13
test byte [ebp + 0xe920], 4
je 0x478f03
movzx ecx, byte [edx + 0x22c]
movzx eax, bl
inc eax
cmp eax, ecx
jne 0x478f13
or edi, 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x24], edi
test byte [edx + 4], 2
je 0x478f4f
test dword [esi + 0x24], 0x200
jne 0x478f4f
movzx eax, byte [edx + 0x232]
movzx eax, word [edx + eax*2 + 0xc]
inc eax
cmp dword [esi + 0x94], eax
jne 0x478fc9
movzx eax, byte [edx + 0x231]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
jmp 0x478fc9
movzx eax, byte [edx + 0x22c]
movzx eax, word [edx + eax*2 + 0xa]
cmp dword [esi + 0x94], eax
jbe 0x478fc9
test byte [ebp + 0xe920], 0x20
jne 0x478f75
test dword [esi + 0x24], 0x200
je 0x478f7c
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 0x478fc9
mov eax, dword [esp + 0x10]
cmp eax, dword [ebp + 0xe910]
jae 0x478fb4
test byte [ebp + 0xe920], 0x20
je 0x478fc9
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
mov ecx, dword [esi + 0x24]
test ecx, 0x400000
je 0x47905f
inc dword [esi + 0x98]
test byte [edx + 4], 0x20
je 0x479014
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x234]
movzx eax, word [edx + eax*2 + 0x4c]
je 0x478ffa
inc eax
cmp dword [esi + 0x98], eax
jne 0x479014
movzx eax, byte [edx + 0x233]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], eax
test byte [edx + 4], 0x10
je 0x479045
movzx eax, byte [edx + 0x236]
movzx eax, word [edx + eax*2 + 0x4c]
inc eax
cmp dword [esi + 0x98], eax
jne 0x479045
test ecx, 0x200
jne 0x479045
movzx eax, byte [edx + 0x235]
movzx eax, word [edx + eax*2 + 0x4c]
jmp 0x479059
movzx eax, byte [edx + 0x22d]
movzx eax, word [edx + eax*2 + 0x4a]
cmp dword [esi + 0x98], eax
jbe 0x47905f
mov dword [esi + 0x98], eax
test ecx, 0x800000
je 0x4790fa
inc dword [esi + 0x9c]
test dword [edx + 4], 0x100
je 0x4790a6
movzx eax, byte [edx + 0x238]
movzx eax, word [edx + eax*2 + 0x8c]
cmp dword [esi + 0x9c], eax
jb 0x4790a6
movzx eax, byte [edx + 0x237]
movzx eax, word [edx + eax*2 + 0x8c]
mov dword [esi + 0x9c], eax
test byte [edx + 4], 0x80
je 0x4790dd
test ecx, 0x200
jne 0x4790dd
movzx eax, byte [edx + 0x23a]
movzx eax, word [edx + eax*2 + 0x8c]
inc eax
cmp dword [esi + 0x9c], eax
jne 0x4790fa
movzx eax, byte [edx + 0x239]
movzx eax, word [edx + eax*2 + 0x8c]
jmp 0x4790f4
movzx eax, byte [edx + 0x22e]
movzx eax, word [edx + eax*2 + 0x8a]
cmp dword [esi + 0x9c], eax
jbe 0x4790fa
mov dword [esi + 0x9c], eax
and dword [esi + 0x24], 0xffff7fff
mov edi, dword [esi + 0x6c]
test edi, edi
jne 0x479112
cmp dword [esi + 0x14], edi
jne 0x479112
cmp dword [esi + 0x10], edi
je 0x479119
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 0x479130
and dword [esi + 0x24], 0xfffffffd
mov eax, dword [esi + 0x60]
mov dword [esi + 0x68], 0
mov dword [esi + 0x64], 0
test eax, eax
je 0x47914f
cmp dword [esi + 0x20], 0
je 0x47914f
test ebx, ebx
jne 0x479151
xor eax, eax
mov dword [esi], eax
test eax, eax
je 0x47940c
cmp dword [0x15e4e3c], 2
jb 0x4791f7
mov eax, dword [esi + 0x70]
add eax, 0xffffff80
imul eax, dword [0x15e4e28]
cdq
and edx, 0x7f
lea ecx, [edx + eax]
sar ecx, 7
add ecx, 0x80
jns 0x47918b
xor ecx, ecx
jmp 0x479198
cmp ecx, 0x100
jle 0x479198
mov ecx, 0x100
mov edx, dword [0x1656fbc]
test dl, 1
je 0x4791ac
mov eax, 0x100
sub eax, ecx
mov ecx, eax
imul edi, dword [esp + 0x20]
shr edi, 7
mov eax, edi
test edx, 0x200
je 0x4791dc
cmp ecx, 0x80
jge 0x4791d7
imul eax, ecx
shl edi, 7
sar eax, 8
mov dword [esi + 0x68], eax
sar edi, 8
jmp 0x479202
shl eax, 7
jmp 0x4791df
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 0x479205
imul edi, dword [esp + 0x20]
shr edi, 8
mov dword [esi + 0x68], edi
mov dword [esi + 0x64], edi
cmp dword [esi + 0x64], 0xffff
jle 0x479215
mov dword [esi + 0x64], 0xffff
cmp dword [esi + 0x68], 0xffff
jle 0x479225
mov dword [esi + 0x68], 0xffff
test byte [0x1656fbc], 8
je 0x479237
or dword [esi + 0x24], 0x1000
jmp 0x47926c
and dword [esi + 0x24], 0xffffcfff
mov eax, dword [esi + 0x24]
cmp ebx, 0x10000
je 0x479264
mov ecx, dword [0x1656fbc]
test cl, 0x10
jne 0x47926c
test ecx, 0x400
jne 0x47926c
cmp ebx, 0xff00
jl 0x47926c
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 0x4792a5
cmp dword [0x15e4e3c], 2
ja 0x4792a5
neg eax
mov dword [esi + 0x68], eax
test cl, cl
jns 0x4792ae
neg ebx
mov dword [esi + 0xc], ebx
test ecx, 0x8000
je 0x4793c1
mov edx, dword [esi + 0x10]
cmp edx, edi
jne 0x4792cd
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x68]
je 0x4793c1
mov eax, dword [esi + 0x64]
mov ebx, eax
mov ebp, dword [esi + 0x14]
sub ebx, edx
mov edi, dword [0x15e4e44]
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 [0x1656fbc], 0x10000
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], edi
jne 0x479323
test byte [0x1656fb8], 9
je 0x47935f
test byte [0x1656fbc], 0x10
je 0x47935f
cmp dword [0x1656fc4], 0x14
ja 0x47935f
or edx, dword [esi + 0x14]
je 0x47935f
or eax, ebx
je 0x47935f
test ecx, 0x1000000
jne 0x47935f
mov edi, dword [ebp + 0xe91c]
mov dword [esp + 0x14], edi
cmp edi, 0x800
jle 0x47934f
mov edi, 0x800
mov dword [esp + 0x14], edi
mov ecx, dword [0x15e4e44]
cmp edi, ecx
jge 0x47935f
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 0x4793aa
mov eax, dword [esp + 0x14]
mov dword [esi + 0x5c], eax
jmp 0x4793d3
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 0x4793d3
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 0x47945d
mov eax, ecx
jmp 0x479447
cmp dword [esi + 0xa4], 0xff
jbe 0x479422
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 0x479447
mov dword [esi + 0xa4], 0
inc eax
add esi, 0x100
mov dword [esp + 0x10], eax
cmp eax, 0x80
jb 0x478340
mov eax, dword [ebp + 0xe914]
cmp eax, dword [0x15e4e2c]
jb 0x4794eb
test dword [0x1656fbc], 0x10000
jne 0x4794eb
test eax, eax
je 0x4794eb
mov eax, 1
lea ecx, [ebp + 0x8004]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
cmp eax, dword [ebp + 0xe914]
jae 0x4794d2
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 0x4794ca
mov dword [edx - 4], edi
inc esi
mov dword [edx], ebx
add edx, 4
cmp esi, dword [ebp + 0xe914]
jb 0x4794a0
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 0x479492
mov ecx, dword [ebp + 0xe90c]
pop edi
pop esi
pop ebx
test ecx, 0x400
je 0x47953f
mov eax, dword [ebp + 0xe984]
test eax, eax
jne 0x479519
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 0x479535
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