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

Disassembly:
sub esp, 0x1c
push ebp
mov ebp, ecx
mov dword [esp + 0xc], ebp
call fcn.0049bdf0
test eax, eax
je 0x49d692
inc dword [ebp + 0xe930]
mov ecx, dword [ebp + 0xe940]
test ecx, ecx
je 0x49d692
mov eax, dword [ebp + 0xe96c]
xor edx, edx
imul eax, dword [0x1174384]
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 0x49c3eb
mov esi, 0x1f
test byte [ebp + 0xe920], 0x20
je 0x49c407
cmp dword [ebp + 0xe928], 0
je 0x49c407
cmp esi, 6
jge 0x49c407
mov esi, 6
mov ecx, dword [ebp + 0xe95c]
cmp ecx, 0x80
jle 0x49c42b
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 [0x11e64ec], 4
je 0x49c43f
mov esi, dword [esi*4 + str.____hpx]
jmp 0x49c446
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 0x49c461
mov eax, 0x200
test dword [ebp + 0xe90c], 0x400
je 0x49c487
mov ecx, dword [ebp + 0xe988]
test ecx, ecx
je 0x49c487
push ecx
push dword [ebp + 0xe984]
push eax
call fcn.0049d6e0
add esp, 0xc
shl eax, 7
xor edx, edx
div esi
mov ecx, eax
mov dword [esp + 0x20], ecx
cmp ecx, 0x180
jbe 0x49c4a4
mov dword [esp + 0x20], 0x180
xor eax, eax
mov dword [ebp + 0xe914], 0
mov esi, ebp
mov dword [esp + 0x10], eax
jmp 0x49c4c0
mov ebx, dword [esi + 0x24]
test ebx, 0x400
je 0x49c4ef
mov eax, dword [esi + 0x7c]
or eax, dword [esi + 0x14]
or eax, dword [esi + 0x10]
mov eax, dword [esp + 0x10]
jne 0x49c4ef
mov dword [esi + 0x20], 0
mov dword [esi + 0x58], 0
mov dword [esi + 0x54], 0
test ebx, 0x100
jne 0x49d5bd
cmp eax, dword [ebp + 0xe910]
jb 0x49c50d
cmp dword [esi + 0x20], 0
je 0x49d5bd
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 0x49c546
mov dword [esi + 0x70], 0x100
cmp dword [esi + 0x80], 0
mov dword [esi + 0x5c], 0
je 0x49cff5
cmp dword [esi + 0x20], 0
je 0x49cff5
movsx edi, word [esi + 0xd0]
add edi, dword [esi + 0x74]
jns 0x49c574
xor edi, edi
jmp 0x49c581
cmp edi, 0x100
jle 0x49c581
mov edi, 0x100
test ebx, 0x20000
je 0x49c62d
mov ebx, dword [esi + 0xc8]
and ebx, 0x3f
test edi, edi
jle 0x49c5fa
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 0x49c5e4
dec eax
je 0x49c5da
dec eax
movzx eax, byte [esi + 0xe5]
je 0x49c5d0
movsx edx, word [ebx*2 + 0x545aa8]
jmp 0x49c5f3
movsx edx, word [ebx*2 + 0x545c28]
jmp 0x49c5f3
movsx edx, word [ebx*2 + 0x545ba8]
jmp 0x49c5ec
movsx edx, word [ebx*2 + 0x545b28]
movzx eax, byte [esi + 0xe5]
imul edx, eax
sar edx, cl
add edi, edx
cmp dword [ebp + 0xe92c], 0
jne 0x49c618
test dword [ebp + 0xe920], 0x122
je 0x49c62a
test byte [ebp + 0xe90c], 4
jne 0x49c62a
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 0x49c693
movzx ecx, byte [esi + 0xf3]
mov edx, ecx
and ecx, 0xf
shr edx, 4
add ecx, edx
test byte [ebp + 0xe920], 0x20
je 0x49c659
test byte [ebp + 0xe90c], 4
je 0x49c65d
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 0x49c67c
test byte [ebp + 0xe920], 0x22
je 0x49c68a
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 0x49c69b
xor edi, edi
jmp 0x49c6a8
cmp edi, 0x100
jle 0x49c6a8
mov edi, 0x100
mov eax, dword [esi + 0x8c]
shl edi, 6
test eax, eax
je 0x49c9f0
mov edx, dword [esi + 0x24]
test edx, 0x200000
je 0x49c7c1
mov cl, byte [eax + 0x22c]
test cl, cl
je 0x49c7c1
mov eax, dword [esi + 0x94]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x1c], eax
dec ebx
je 0x49c706
mov ecx, dword [esi + 0x8c]
add ecx, 0xc
movzx eax, word [ecx]
cmp dword [esp + 0x1c], eax
jle 0x49c704
inc edx
add ecx, 2
cmp edx, ebx
jb 0x49c6f1
jmp 0x49c706
mov ebx, edx
mov ecx, dword [esi + 0x8c]
mov eax, dword [esp + 0x1c]
movzx edx, word [ecx + ebx*2 + 0xc]
cmp eax, edx
jl 0x49c72e
movzx ecx, byte [ebx + ecx + 0xcc]
mov ebp, dword [esp + 0x18]
shl ecx, 2
mov dword [esp + 0x14], edx
jmp 0x49c758
test ebx, ebx
je 0x49c752
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 0x49c758
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp eax, edx
jle 0x49c762
mov eax, edx
mov dword [esp + 0x1c], edx
cmp edx, dword [esp + 0x14]
jle 0x49c79b
cmp eax, dword [esp + 0x14]
jle 0x49c79b
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 0x49c7a3
xor ecx, ecx
jmp 0x49c7b0
cmp ecx, 0x100
jle 0x49c7b0
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 0x49c8c9
mov cl, byte [eax + 0x22d]
test cl, cl
je 0x49c8c9
mov eax, dword [esi + 0x98]
xor edx, edx
movzx ebx, cl
mov dword [esp + 0x14], eax
dec ebx
je 0x49c80b
mov ecx, dword [esi + 0x8c]
add ecx, 0x4c
movzx eax, word [ecx]
cmp dword [esp + 0x14], eax
jle 0x49c809
inc edx
add ecx, 2
cmp edx, ebx
jb 0x49c7f6
jmp 0x49c80b
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 0x49c870
test ebx, ebx
je 0x49c847
mov eax, dword [esi + 0x8c]
movzx ecx, byte [ebx + eax + 0xeb]
movzx eax, word [eax + ebx*2 + 0x4a]
jmp 0x49c84e
mov ecx, pe_nt_image_headers32
xor eax, eax
cmp dword [esp + 0x1c], eax
jle 0x49c870
cmp edx, eax
jle 0x49c870
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 0x49c878
xor ecx, ecx
jmp 0x49c882
cmp ecx, 0x40
jle 0x49c882
mov ecx, 0x40
mov ebx, dword [esp + 0x28]
cmp ebx, 0x80
jl 0x49c89d
mov eax, 0x100
add ecx, 0xffffffe0
sub eax, ebx
imul eax, ecx
jmp 0x49c8a3
lea eax, [ecx - 0x20]
imul eax, ebx
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add ebx, eax
test ebx, ebx
jns 0x49c8b6
xor ebx, ebx
jmp 0x49c8c3
cmp ebx, 0x100
jle 0x49c8c3
mov ebx, 0x100
mov edx, dword [esi + 0x24]
mov dword [esi + 0x70], ebx
mov ecx, dword [esi + 0x8c]
test edx, 0x400
je 0x49c905
mov eax, dword [ecx]
test eax, eax
je 0x49c8fc
add eax, eax
sub dword [esi + 0x7c], eax
cmp dword [esi + 0x7c], 0
jg 0x49c8ef
mov dword [esi + 0x7c], 0
mov eax, dword [esi + 0x7c]
imul eax, edi
sar eax, 0x10
mov edi, eax
jmp 0x49c905
mov eax, dword [esi + 0x7c]
neg eax
sbb eax, eax
and edi, eax
mov dl, byte [ecx + 0x247]
test dl, dl
je 0x49c953
mov ebx, dword [esi + 0x70]
test ebx, ebx
je 0x49c953
mov al, byte [esi + 0xd4]
test al, al
je 0x49c953
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 0x49c944
xor eax, eax
jmp 0x49c950
cmp eax, 0x100
jle 0x49c950
mov eax, 0x100
mov dword [esi + 0x70], eax
test edi, edi
je 0x49c97f
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.0049d6e0
add esp, 0xc
mov dword [esi + 0x6c], eax
mov eax, dword [ebp + 0xe974]
cmp dword [esi + 0x80], eax
jge 0x49c993
mov dword [esi + 0x80], eax
mov eax, dword [esi + 0x24]
mov ebx, dword [esi + 0x80]
and eax, 0x180000
cmp eax, 0x180000
jne 0x49c9c6
push dword [esi + 0x84]
mov ecx, ebp
push dword [esi + 0xb0]
push ebx
call fcn.00498930
push eax
mov ecx, ebp
call fcn.00498b40
mov ebx, eax
cmp byte [esi + 0xd8], 1
jne 0x49ca32
mov eax, dword [ebp + 0xe92c]
xor edx, edx
mov ecx, 3
div ecx
dec edx
je 0x49ca09
dec edx
jne 0x49ca32
movzx ecx, byte [esi + 0xd9]
and ecx, 0xf
jmp 0x49ca13
test dword [esi + 0x24], 0x400
je 0x49c953
mov dword [esi + 0x7c], 0
jmp 0x49c97f
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.00498b40
mov ebx, eax
test dword [ebp + 0xe90c], 0x10000
je 0x49ca5a
cmp ebx, 0x1c4
jge 0x49ca4d
mov ebx, 0x1c4
jmp 0x49ca5a
cmp ebx, 0xd60
jle 0x49ca5a
mov ebx, 0xd60
mov eax, dword [esi + 0x8c]
test eax, eax
je 0x49cbe7
mov ecx, dword [esi + 0x24]
test ecx, 0x800000
je 0x49cbe7
cmp byte [eax + 0x22e], 0
je 0x49cbe7
movzx edi, byte [eax + 0x22e]
xor ecx, ecx
mov edx, dword [esi + 0x9c]
mov dword [esp + 0x1c], edx
dec edi
je 0x49cabb
mov edx, eax
add edx, 0x8c
movzx eax, word [edx]
cmp dword [esp + 0x1c], eax
jle 0x49cab5
inc ecx
add edx, 2
cmp ecx, edi
jb 0x49caa2
jmp 0x49cab7
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 0x49caf0
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 0x49cb1d
test edi, edi
je 0x49cb17
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 0x49cb1d
xor ecx, ecx
mov dword [esp + 0x14], ecx
cmp edx, dword [esp + 0x1c]
jle 0x49cb27
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
cmp dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x18]
jle 0x49cb60
cmp edx, dword [esp + 0x14]
jle 0x49cb60
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 0x49cb6f
mov ecx, 0xffffff00
jmp 0x49cb7c
cmp ecx, 0x100
jle 0x49cb7c
mov ecx, 0x100
mov eax, dword [esi + 0x8c]
test dword [eax + 4], 0x400
je 0x49cba2
mov eax, dword [esi + 0x24]
shr eax, 0xe
push ecx
not eax
mov ecx, ebp
and eax, 1
push eax
push esi
call fcn.004ad300
jmp 0x49cbe7
test ecx, ecx
jns 0x49cbc3
neg ecx
cmp ecx, 0xff
jle 0x49cbb5
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x545e28]
jmp 0x49cbdc
cmp ecx, 0xff
jle 0x49cbd0
mov ecx, 0xff
push 0x10000
push dword [ecx*4 + 0x546228]
push ebx
call fcn.0049d6e0
mov ebx, eax
add esp, 0xc
test dword [esi + 0x24], 0x10000
je 0x49cd28
movzx eax, byte [esi + 0xe0]
mov edx, dword [esi + 0xc4]
and eax, 3
mov dword [esp + 0x1c], edx
dec eax
je 0x49cc2f
dec eax
je 0x49cc25
dec eax
je 0x49cc1b
movsx eax, word [edx*2 + 0x545aa8]
jmp 0x49cc37
movsx eax, word [edx*2 + 0x545c28]
jmp 0x49cc37
movsx eax, word [edx*2 + 0x545ba8]
jmp 0x49cc37
movsx eax, word [edx*2 + 0x545b28]
cmp dword [ebp + 0xe920], 0x20
jne 0x49cc4e
test byte [ebp + 0xe90c], 4
mov ecx, 7
je 0x49cc53
mov ecx, 6
movzx edi, byte [esi + 0xe2]
imul edi, eax
sar edi, cl
test byte [ebp + 0xe90c], 0x10
je 0x49ccf9
test byte [ebp + 0xe920], 0x20
je 0x49ccf9
mov dword [esp + 0x28], edi
push 0x10000
test edi, edi
jns 0x49ccbc
neg edi
mov eax, edi
mov dword [esp + 0x2c], edi
sar eax, 2
push dword [eax*4 + 0x546228]
push ebx
call fcn.0049d6e0
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x49ccf5
push 0x10000
push dword [eax*4 + 0x545de8]
jmp 0x49cce8
sar edi, 2
push dword [edi*4 + 0x545e28]
push ebx
call fcn.0049d6e0
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x28]
sub edi, ebx
and eax, 3
je 0x49ccf5
push 0x10000
push dword [eax*4 + 0x545da8]
push ebx
call fcn.0049d6e0
sub eax, ebx
add esp, 0xc
add edi, eax
mov edx, dword [esp + 0x1c]
add ebx, edi
cmp dword [ebp + 0xe92c], 0
jne 0x49cd16
test byte [ebp + 0xe920], 0x20
je 0x49cd28
test byte [ebp + 0xe90c], 4
jne 0x49cd28
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 0x49cdb9
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 0x49cd77
dec eax
je 0x49cd6d
dec eax
je 0x49cd63
movsx ecx, word [ecx*2 + 0x545aa8]
jmp 0x49cd7f
movsx ecx, word [ecx*2 + 0x545c28]
jmp 0x49cd7f
movsx ecx, word [ecx*2 + 0x545ba8]
jmp 0x49cd7f
movsx ecx, word [ecx*2 + 0x545b28]
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 0x49cda7
xor eax, eax
jmp 0x49cdb3
cmp eax, 0x100
jle 0x49cdb3
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 0x49cf1f
cmp byte [edi + 0x28], al
je 0x49cf1f
mov cl, byte [edi + 0x27]
test cl, cl
jne 0x49cdec
movzx eax, byte [edi + 0x28]
shl eax, 8
mov dword [esi + 0xbc], eax
jmp 0x49ce32
test byte [ebp + 0xe920], 0x20
je 0x49cdfd
movzx eax, cl
shl eax, 3
jmp 0x49ce12
test edx, 0x200
jne 0x49ce18
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 0x49ce32
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.0x49ce4c
jmp dword [eax*4 + 0x49d6cc]
mov eax, ecx
and eax, 0x3f
movsx edx, word [eax*2 + 0x545c28]
lea eax, [ecx + 1]
mov dword [esi + 0xc0], eax
jmp 0x49ceaa
shr ecx, 1
mov edx, 0xffffffc0
sub edx, ecx
and edx, 0x7f
sub edx, 0x40
jmp 0x49ceaa
mov edx, ecx
shr edx, 1
sub edx, 0x40
and edx, 0x7f
sub edx, 0x40
jmp 0x49ceaa
and cl, 0x80
movzx edx, cl
neg edx
sbb edx, edx
and edx, 0x80
add edx, 0xffffffc0
jmp 0x49ceaa
movzx eax, cl
movsx edx, byte [eax + 0x545ca8]
mov ecx, dword [esi + 0xbc]
imul ecx, edx
sar ecx, 8
test byte [ebp + 0xe920], 0x20
je 0x49cf16
test ecx, ecx
jns 0x49ceda
neg ecx
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x545e28]
mov eax, dword [eax*4 + 0x545e2c]
jmp 0x49ceed
mov eax, ecx
sar eax, 8
mov edx, dword [eax*4 + 0x546228]
mov eax, dword [eax*4 + 0x54622c]
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.0049d6e0
mov ebx, eax
add esp, 0xc
movzx eax, bl
sar ebx, 8
jmp 0x49cf1f
mov eax, dword [esp + 0x28]
sar ecx, 6
add ebx, ecx
cmp ebx, dword [ebp + 0xe974]
jg 0x49cf3d
test byte [ebp + 0xe920], 2
je 0x49cf37
mov dword [esi + 0x20], 0
mov ebx, dword [ebp + 0xe974]
cmp ebx, dword [ebp + 0xe978]
jle 0x49cf73
test byte [ebp + 0xe920], 0x20
jne 0x49cf56
cmp ebx, 0x100000
jl 0x49cf6b
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.00498000
test byte [ebp + 0xe920], 0x20
je 0x49cfa7
cmp eax, 0x100
jae 0x49cfa7
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
push dword [0x1174384]
push 0x10000
push eax
call fcn.0049d6e0
add esp, 0xc
lea ecx, [eax - 0xffb0]
cmp ecx, 0xe0
ja 0x49cfce
mov eax, 0x10000
mov ecx, dword [ebp + 0xe968]
cmp ecx, 0x80
je 0x49cfe2
imul eax, ecx
shr eax, 7
cmp eax, 0xff0000
jbe 0x49cfee
mov eax, 0xff0000
inc eax
and eax, 0xfffffffc
mov dword [esi + 0xc], eax
mov edx, dword [esi + 0x8c]
test edx, edx
je 0x49d27a
mov edi, dword [esi + 0x24]
test edi, 0x200000
je 0x49d149
inc dword [esi + 0x94]
test byte [edx + 4], 4
je 0x49d093
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x230]
movzx eax, word [edx + eax*2 + 0xc]
je 0x49d034
inc eax
cmp dword [esi + 0x94], eax
jne 0x49d093
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 0x49d093
movzx eax, al
cmp byte [eax + edx + 0xcc], 0
jne 0x49d093
test byte [ebp + 0xe920], 4
je 0x49d083
movzx ecx, byte [edx + 0x22c]
movzx eax, bl
inc eax
cmp eax, ecx
jne 0x49d093
or edi, 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x24], edi
test byte [edx + 4], 2
je 0x49d0cf
test dword [esi + 0x24], 0x200
jne 0x49d0cf
movzx eax, byte [edx + 0x232]
movzx eax, word [edx + eax*2 + 0xc]
inc eax
cmp dword [esi + 0x94], eax
jne 0x49d149
movzx eax, byte [edx + 0x231]
movzx eax, word [edx + eax*2 + 0xc]
mov dword [esi + 0x94], eax
jmp 0x49d149
movzx eax, byte [edx + 0x22c]
movzx eax, word [edx + eax*2 + 0xa]
cmp dword [esi + 0x94], eax
jbe 0x49d149
test byte [ebp + 0xe920], 0x20
jne 0x49d0f5
test dword [esi + 0x24], 0x200
je 0x49d0fc
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 0x49d149
mov eax, dword [esp + 0x10]
cmp eax, dword [ebp + 0xe910]
jae 0x49d134
test byte [ebp + 0xe920], 0x20
je 0x49d149
or dword [esi + 0x24], 0x400
mov dword [esi + 0x7c], 0
mov dword [esi + 0x6c], 0
mov ecx, dword [esi + 0x24]
test ecx, 0x400000
je 0x49d1df
inc dword [esi + 0x98]
test byte [edx + 4], 0x20
je 0x49d194
cmp dword [ebp + 0xe920], 4
movzx eax, byte [edx + 0x234]
movzx eax, word [edx + eax*2 + 0x4c]
je 0x49d17a
inc eax
cmp dword [esi + 0x98], eax
jne 0x49d194
movzx eax, byte [edx + 0x233]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [esi + 0x98], eax
test byte [edx + 4], 0x10
je 0x49d1c5
movzx eax, byte [edx + 0x236]
movzx eax, word [edx + eax*2 + 0x4c]
inc eax
cmp dword [esi + 0x98], eax
jne 0x49d1c5
test ecx, 0x200
jne 0x49d1c5
movzx eax, byte [edx + 0x235]
movzx eax, word [edx + eax*2 + 0x4c]
jmp 0x49d1d9
movzx eax, byte [edx + 0x22d]
movzx eax, word [edx + eax*2 + 0x4a]
cmp dword [esi + 0x98], eax
jbe 0x49d1df
mov dword [esi + 0x98], eax
test ecx, 0x800000
je 0x49d27a
inc dword [esi + 0x9c]
test dword [edx + 4], 0x100
je 0x49d226
movzx eax, byte [edx + 0x238]
movzx eax, word [edx + eax*2 + 0x8c]
cmp dword [esi + 0x9c], eax
jb 0x49d226
movzx eax, byte [edx + 0x237]
movzx eax, word [edx + eax*2 + 0x8c]
mov dword [esi + 0x9c], eax
test byte [edx + 4], 0x80
je 0x49d25d
test ecx, 0x200
jne 0x49d25d
movzx eax, byte [edx + 0x23a]
movzx eax, word [edx + eax*2 + 0x8c]
inc eax
cmp dword [esi + 0x9c], eax
jne 0x49d27a
movzx eax, byte [edx + 0x239]
movzx eax, word [edx + eax*2 + 0x8c]
jmp 0x49d274
movzx eax, byte [edx + 0x22e]
movzx eax, word [edx + eax*2 + 0x8a]
cmp dword [esi + 0x9c], eax
jbe 0x49d27a
mov dword [esi + 0x9c], eax
and dword [esi + 0x24], 0xffff7fff
mov edi, dword [esi + 0x6c]
test edi, edi
jne 0x49d292
cmp dword [esi + 0x14], edi
jne 0x49d292
cmp dword [esi + 0x10], edi
je 0x49d299
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 0x49d2b0
and dword [esi + 0x24], 0xfffffffd
mov eax, dword [esi + 0x60]
mov dword [esi + 0x68], 0
mov dword [esi + 0x64], 0
test eax, eax
je 0x49d2cf
cmp dword [esi + 0x20], 0
je 0x49d2cf
test ebx, ebx
jne 0x49d2d1
xor eax, eax
mov dword [esi], eax
test eax, eax
je 0x49d58c
cmp dword [0x117438c], 2
jb 0x49d377
mov eax, dword [esi + 0x70]
add eax, 0xffffff80
imul eax, dword [0x1174378]
cdq
and edx, 0x7f
lea ecx, [edx + eax]
sar ecx, 7
add ecx, 0x80
jns 0x49d30b
xor ecx, ecx
jmp 0x49d318
cmp ecx, 0x100
jle 0x49d318
mov ecx, 0x100
mov edx, dword [0x11e64ec]
test dl, 1
je 0x49d32c
mov eax, 0x100
sub eax, ecx
mov ecx, eax
imul edi, dword [esp + 0x20]
shr edi, 7
mov eax, edi
test edx, 0x200
je 0x49d35c
cmp ecx, 0x80
jge 0x49d357
imul eax, ecx
shl edi, 7
sar eax, 8
mov dword [esi + 0x68], eax
sar edi, 8
jmp 0x49d382
shl eax, 7
jmp 0x49d35f
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 0x49d385
imul edi, dword [esp + 0x20]
shr edi, 8
mov dword [esi + 0x68], edi
mov dword [esi + 0x64], edi
cmp dword [esi + 0x64], 0xffff
jle 0x49d395
mov dword [esi + 0x64], 0xffff
cmp dword [esi + 0x68], 0xffff
jle 0x49d3a5
mov dword [esi + 0x68], 0xffff
test byte [0x11e64ec], 8
je 0x49d3b7
or dword [esi + 0x24], 0x1000
jmp 0x49d3ec
and dword [esi + 0x24], 0xffffcfff
mov eax, dword [esi + 0x24]
cmp ebx, 0x10000
je 0x49d3e4
mov ecx, dword [0x11e64ec]
test cl, 0x10
jne 0x49d3ec
test ecx, 0x400
jne 0x49d3ec
cmp ebx, 0xff00
jl 0x49d3ec
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 0x49d425
cmp dword [0x117438c], 2
ja 0x49d425
neg eax
mov dword [esi + 0x68], eax
test cl, cl
jns 0x49d42e
neg ebx
mov dword [esi + 0xc], ebx
test ecx, 0x8000
je 0x49d541
mov edx, dword [esi + 0x10]
cmp edx, edi
jne 0x49d44d
mov eax, dword [esi + 0x14]
cmp eax, dword [esi + 0x68]
je 0x49d541
mov eax, dword [esi + 0x64]
mov ebx, eax
mov ebp, dword [esi + 0x14]
sub ebx, edx
mov edi, dword [0x1174394]
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 [0x11e64ec], 0x10000
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x14], edi
jne 0x49d4a3
test byte [0x11e64e8], 9
je 0x49d4df
test byte [0x11e64ec], 0x10
je 0x49d4df
cmp dword [0x11e64f4], 0x14
ja 0x49d4df
or edx, dword [esi + 0x14]
je 0x49d4df
or eax, ebx
je 0x49d4df
test ecx, 0x1000000
jne 0x49d4df
mov edi, dword [ebp + 0xe91c]
mov dword [esp + 0x14], edi
cmp edi, 0x800
jle 0x49d4cf
mov edi, 0x800
mov dword [esp + 0x14], edi
mov ecx, dword [0x1174394]
cmp edi, ecx
jge 0x49d4df
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 0x49d52a
mov eax, dword [esp + 0x14]
mov dword [esi + 0x5c], eax
jmp 0x49d553
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 0x49d553
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 0x49d5dd
mov eax, ecx
jmp 0x49d5c7
cmp dword [esi + 0xa4], 0xff
jbe 0x49d5a2
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 0x49d5c7
mov dword [esi + 0xa4], 0
inc eax
add esi, 0x100
mov dword [esp + 0x10], eax
cmp eax, 0x80
jb 0x49c4c0
mov eax, dword [ebp + 0xe914]
cmp eax, dword [0x117437c]
jb 0x49d66b
test dword [0x11e64ec], 0x10000
jne 0x49d66b
test eax, eax
je 0x49d66b
mov eax, 1
lea ecx, [ebp + 0x8004]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], ecx
cmp eax, dword [ebp + 0xe914]
jae 0x49d652
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 0x49d64a
mov dword [edx - 4], edi
inc esi
mov dword [edx], ebx
add edx, 4
cmp esi, dword [ebp + 0xe914]
jb 0x49d620
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 0x49d612
mov ecx, dword [ebp + 0xe90c]
pop edi
pop esi
pop ebx
test ecx, 0x400
je 0x49d6bf
mov eax, dword [ebp + 0xe984]
test eax, eax
jne 0x49d699
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 0x49d6b5
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