Function at 0x4a2a50
Capabilities:
Get geographical location
Persist via run registry key
Reference sql statements

Disassembly:
sub esp, 0x38
push ebx
push ebp
push edi
mov edi, dword [esp + 0x48]
mov ebp, ecx
mov dword [esp + 0x10], ebp
test edi, edi
je 0x4a378b
mov ebx, dword [esp + 0x4c]
cmp ebx, 0x200
jb 0x4a378b
mov eax, dword [edi]
and eax, 0xffffff
cmp eax, 0x444d4d
jne 0x4a378b
mov ecx, dword [edi + 8]
lea eax, [edi + 8]
mov dword [esp + 0x40], eax
test ecx, ecx
je 0x4a378b
push esi
mov esi, ecx
mov eax, ecx
shr eax, 0x10
and esi, 0xff0000
or esi, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr esi, 8
shl eax, 8
or esi, eax
cmp esi, ebx
jae 0x4a377f
lea eax, [esi + 0x314]
cmp eax, ebx
jae 0x4a377f
mov al, byte [edi + 3]
mov byte [esp + 0x13], al
sub al, 0x30
cmp al, 3
ja 0x4a377f
mov dword [ebp + 0xe920], 8
mov dword [ebp + 0xe964], 0x20
push dword [edi + 0x10]
call fcn.004a37c0
push dword [edi + 0x18]
mov dword [esp + 0x48], eax
call fcn.004a37c0
push dword [edi + 0x20]
mov dword [esp + 0x48], eax
call fcn.004a37c0
add esp, 0xc
test eax, eax
je 0x4a2b2e
lea ecx, [ebx - 0x50]
cmp eax, ecx
jae 0x4a2b2e
add eax, edi
jmp 0x4a2b30
xor eax, eax
add esi, edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
mov ax, word [esi + 0x1f8]
rol ax, 8
movzx eax, ax
mov dword [esp + 0x34], eax
mov dword [ebp + 0xe910], 4
movzx eax, byte [esi + 0x313]
mov dword [ebp + 0xe924], eax
cmp eax, 0x3f
jbe 0x4a2b72
mov dword [ebp + 0xe924], 0x3f
mov dword [ebp + 0xe904], 0x7d
mov ax, word [esi + 0x2fc]
rol ax, 8
movzx ecx, ax
test ecx, ecx
jne 0x4a2b93
mov ecx, 0x7d
mov al, byte [esi + 0x300]
test al, 0x20
je 0x4a2bb3
movzx edx, al
and edx, 0x1f
inc edx
jne 0x4a2bab
mov edx, 4
imul edx, ecx
shr edx, 2
jmp 0x4a2be2
test byte [esi + 0x2ff], 0x40
je 0x4a2bcd
lea eax, [ecx - 1]
cmp eax, 9
ja 0x4a2bcd
movzx edx, byte [ecx + 0x546917]
jmp 0x4a2be2
push 0xe79ac
push 0x369e99
push ecx
call fcn.0049d6e0
add esp, 0xc
mov edx, eax
movzx ecx, byte [esi + 0x301]
mov dword [ebp + 0xe900], ecx
test ecx, ecx
jne 0x4a2bfd
mov dword [ebp + 0xe900], 6
cmp edx, 0x21
jae 0x4a2c09
mov edx, 0x21
jmp 0x4a2c58
cmp edx, 0xff
jbe 0x4a2c58
cmp dword [ebp + 0xe900], 3
jbe 0x4a2c4b
lea ebx, [ebx]
cmp edx, 0x104
jbe 0x4a2c47
mov ecx, dword [ebp + 0xe900]
lea esi, [ecx - 1]
mov eax, esi
mov dword [ebp + 0xe900], esi
imul eax, edx
xor edx, edx
div ecx
mov edx, eax
cmp esi, 3
ja 0x4a2c20
mov esi, dword [esp + 0x28]
cmp edx, 0xff
jbe 0x4a2c58
mov edx, 0xff
xor edi, edi
mov dword [ebp + 0xe904], edx
mov ebx, 0x100
cmp dword [ebp + 0xe924], edi
jbe 0x4a2cf1
add esi, 6
lea edx, [ebp + 0x825e]
lea ebx, [ebx]
movzx eax, word [esi - 6]
rol ax, 8
movzx eax, ax
lea ecx, [eax + eax]
mov dword [edx - 0x1a], ecx
movzx eax, word [esi - 4]
rol ax, 8
movzx eax, ax
lea eax, [ecx + eax*2]
mov dword [edx - 0x16], eax
movzx eax, byte [esi]
shl ax, 2
mov word [edx], ax
mov eax, 0x40
mov word [edx + 2], ax
cmp word [edx], bx
jbe 0x4a2cbd
mov word [edx], bx
mov cl, byte [esi + 1]
mov eax, pe_nt_image_headers32
shl cl, 2
sub cl, byte [esi + 1]
neg cl
mov word [edx - 2], ax
shl cl, 2
cmp dword [edx - 0x16], 0
mov byte [edx + 6], cl
je 0x4a2ce2
or word [edx + 4], 2
inc edi
add edx, 0x40
add esi, 8
cmp edi, dword [ebp + 0xe924]
jb 0x4a2c80
mov esi, dword [esp + 0x28]
test byte [esi + 0x2ff], 0x20
jne 0x4a2d05
or dword [ebp + 0xe90c], 2
cmp byte [esp + 0x13], 0x32
jge 0x4a2d51
movzx eax, byte [esi + 0x1fb]
cmp eax, 0x100
jb 0x4a2d21
mov eax, 0xff
jmp 0x4a2d2a
test eax, eax
jne 0x4a2d2a
mov eax, 1
push eax
lea eax, [esi + 0x1fc]
push eax
lea eax, [ebp + 0xd060]
push eax
call sub.MSVCRT.dll_memcpy
movsx eax, byte [esi + 0x2fe]
add esp, 0xc
mov dword [esp + 0x24], eax
jmp 0x4a2f0e
mov ax, word [esi + 0x208]
rol ax, 8
movzx ecx, ax
lea eax, [ecx - 4]
cmp eax, 0x1c
ja 0x4a2d6d
mov dword [ebp + 0xe910], ecx
push dword [esi + 0x1fc]
call fcn.004a37c0
mov cx, word [esi + 0x1fa]
mov ebp, eax
push dword [esi + 0x200]
rol cx, 8
movzx edi, cx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x28], edi
call fcn.004a37c0
mov edx, eax
add esp, 8
mov eax, dword [esp + 0x50]
mov dword [esp + 0x18], edx
test edi, edi
je 0x4a2db7
test edx, edx
je 0x4a2db7
lea ecx, [eax - 2]
cmp edx, ecx
jb 0x4a2dc0
mov edi, 1
mov dword [esp + 0x20], edi
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x38], esi
test edi, edi
je 0x4a2ed3
xor ecx, ecx
test edx, edx
je 0x4a2def
add eax, 0xfffffffe
cmp edx, eax
jae 0x4a2def
mov eax, dword [esp + 0x4c]
movzx ecx, byte [edx + eax + 1]
add edx, 2
mov dword [esp + 0x18], edx
jmp 0x4a2df5
xor edi, edi
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x50]
test ebp, ebp
je 0x4a2ec6
cmp ebp, eax
jae 0x4a2ec6
shl ecx, 2
sub eax, ebp
cmp ecx, eax
jae 0x4a2ec2
lea eax, [ecx + ebp]
mov ecx, dword [esp + 0x4c]
push dword [eax + ecx]
call fcn.004a37c0
mov ebp, eax
add esp, 4
mov eax, dword [esp + 0x50]
test ebp, ebp
je 0x4a31c6
lea ecx, [eax - 0x42a]
cmp ebp, ecx
jae 0x4a31c6
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x4c]
add edi, 0xe99c
add eax, ebp
cmp byte [edi], 0
jne 0x4a2e69
mov ecx, 7
mov esi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x38]
mov ax, word [eax + 0x28]
rol ax, 8
movzx edx, ax
mov eax, dword [esp + 0x50]
sub eax, ebp
sub eax, 0x2a
shr eax, 1
cmp edx, eax
jae 0x4a2eb6
test edx, edx
je 0x4a2eb6
mov eax, dword [esp + 0x4c]
mov edi, dword [esp + 0x14]
add eax, 0x2a
add eax, ebp
mov ebp, dword [esp + 0x34]
movzx ecx, byte [eax + 1]
cmp ecx, ebp
jae 0x4a2eb0
cmp ebx, 0xff
jae 0x4a2eb0
mov byte [ebx + edi + 0xd060], cl
inc ebx
add eax, 2
dec edx
jne 0x4a2e98
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
inc esi
mov dword [esp + 0x38], esi
cmp esi, edi
jb 0x4a2dd0
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
movsx eax, byte [esi + 0x2fe]
mov dword [esp + 0x24], eax
cmp ebx, 0x100
jae 0x4a2f0e
mov ecx, 0x100
lea edi, [ebp + 0xd060]
sub ecx, ebx
add edi, ebx
mov edx, ecx
or eax, 0xffffffff
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov ebx, dword [esp + 0x2c]
test ebx, ebx
je 0x4a3252
cmp dword [ebp + 0xe910], 4
jne 0x4a2f60
test byte [esi + 0x2ff], 0x40
je 0x4a2f60
cmp byte [ebx + 0x24], 0
je 0x4a2f3c
mov dword [ebp + 0xe910], 3
cmp byte [ebx + 0x25], 0
je 0x4a2f48
dec dword [ebp + 0xe910]
cmp byte [ebx + 0x26], 0
je 0x4a2f54
dec dword [ebp + 0xe910]
cmp byte [ebx + 0x27], 0
je 0x4a2f60
dec dword [ebp + 0xe910]
push dword [ebx + 0xc]
call fcn.004a37c0
push dword [ebx + 0x10]
mov edi, eax
call fcn.004a37c0
add esp, 8
mov esi, eax
test edi, edi
je 0x4a2fb6
test esi, esi
je 0x4a2fb6
lea eax, [esi + edi]
cmp eax, edi
jbe 0x4a2fb6
cmp eax, dword [esp + 0x50]
ja 0x4a2fb6
lea eax, [esi + 1]
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [esp + 0x50]
push esi
add ecx, edi
mov dword [ebp + 0xe994], eax
push ecx
push eax
call sub.MSVCRT.dll_memcpy
mov eax, dword [ebp + 0xe994]
add esp, 0x10
mov byte [esi + eax], 0
push dword [ebx + 0x2c]
call fcn.004a37c0
push dword [ebx + 0x30]
mov esi, eax
call fcn.004a37c0
mov edi, dword [esp + 0x58]
add esp, 8
test esi, esi
je 0x4a300a
test eax, eax
je 0x4a300a
lea ecx, [eax + esi]
cmp ecx, esi
jbe 0x4a300a
cmp ecx, edi
ja 0x4a300a
cmp eax, 0x1f
jbe 0x4a2fec
mov eax, 0x1f
push eax
mov eax, dword [esp + 0x50]
add eax, esi
push eax
lea eax, [ebp + 0xe99c]
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov byte [ebp + 0xe9bb], 0
push dword [ebx + 0x14]
call fcn.004a37c0
mov esi, eax
add esp, 4
test esi, esi
je 0x4a30b5
mov ax, word [ebx + 0x1a]
mov cx, word [ebx + 0x18]
rol ax, 8
rol cx, 8
movzx ebp, ax
movzx edx, cx
mov dword [esp + 0x30], edx
cmp ebp, 0x100
jae 0x4a30b1
mov ecx, ebp
imul ecx, edx
cmp ecx, edi
jae 0x4a30b1
mov eax, edi
sub eax, ecx
cmp esi, eax
jae 0x4a30b1
mov ebx, dword [esp + 0x4c]
mov eax, ebp
add ebx, esi
mov dword [esp + 0x38], ebp
cmp ebp, 0x20
jbe 0x4a306c
mov eax, 0x20
mov dword [esp + 0x38], eax
xor esi, esi
test edx, edx
je 0x4a30ad
mov ecx, dword [esp + 0x14]
lea edi, [ecx + 0xe9db]
lea esp, [esp]
cmp esi, dword [ecx + 0xe924]
jae 0x4a309f
push eax
push ebx
lea eax, [edi - 0x1f]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrcpynA]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x14]
mov byte [edi], 0
mov eax, dword [esp + 0x38]
inc esi
add ebx, ebp
add edi, 0x20
cmp esi, edx
jb 0x4a3080
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x14]
mov ecx, dword [ebx + 0x44]
mov edx, ecx
mov edi, dword [esp + 0x50]
mov eax, ecx
mov ebx, dword [esp + 0x4c]
and edx, 0xff0000
shr eax, 0x10
or edx, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr edx, 8
shl eax, 8
or edx, eax
je 0x4a325a
cmp edx, edi
jae 0x4a325a
mov esi, dword [ebp + 0xe910]
mov ecx, edi
sub ecx, edx
lea eax, [esi*4]
cmp eax, ecx
jae 0x4a325a
xor eax, eax
lea ecx, [edx + ebx]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x38], eax
test esi, esi
je 0x4a325a
lea esi, [ebp + 0xc1e3]
mov dword [esp + 0x20], esi
lea ebx, [ebx]
push dword [ecx + eax*4]
xor ebp, ebp
xor ebx, ebx
call fcn.004a37c0
mov edi, eax
add esp, 4
test edi, edi
je 0x4a3228
mov eax, dword [esp + 0x50]
add eax, 0xfffffff8
cmp edi, eax
jae 0x4a3228
jmp 0x4a3160
mov esi, dword [esp + 0x4c]
mov ecx, dword [edi + esi]
mov edx, ecx
mov eax, ecx
and edx, 0xff0000
shr eax, 0x10
or edx, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr edx, 8
shl eax, 8
or edx, eax
je 0x4a31eb
mov ecx, dword [edi + esi + 4]
mov esi, ecx
and esi, 0xff0000
mov eax, ecx
shr eax, 0x10
or esi, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr esi, 8
shl eax, 8
or esi, eax
cmp edx, 2
je 0x4a31d3
cmp edx, 0x80000001
jne 0x4a31d5
mov ebp, esi
jmp 0x4a31d5
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
jmp 0x4a2ec6
mov ebx, esi
mov eax, dword [esp + 0x50]
add edi, 8
add eax, 0xfffffff8
cmp edi, eax
jb 0x4a3160
mov esi, dword [esp + 0x4c]
cmp ebx, 0x14
jbe 0x4a31f5
mov ebx, 0x14
mov edi, dword [esp + 0x50]
test ebp, ebp
je 0x4a3222
cmp ebx, edi
jae 0x4a3222
mov eax, edi
sub eax, ebx
cmp ebp, eax
jae 0x4a3222
lea eax, [esi + ebp]
mov esi, dword [esp + 0x20]
push 0x14
push eax
lea eax, [esi - 0x13]
push eax
call dword [sym.imp.KERNEL32.DLL_lstrcpynA]
mov byte [esi], 0
jmp 0x4a322c
mov esi, dword [esp + 0x20]
jmp 0x4a322c
mov edi, dword [esp + 0x50]
mov eax, dword [esp + 0x38]
add esi, 0x24
mov ebp, dword [esp + 0x14]
inc eax
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], esi
cmp eax, dword [ebp + 0xe910]
jb 0x4a3130
jmp 0x4a3256
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x4c]
mov edx, dword [ebp + 0xe924]
mov ecx, edi
lea eax, [edx*4]
sub ecx, eax
mov eax, dword [esp + 0x3c]
cmp eax, ecx
ja 0x4a3770
add eax, ebx
xor ebx, ebx
mov dword [esp + 0x30], eax
test edx, edx
je 0x4a3376
lea edi, [ebp + 0x8240]
lea ecx, [ecx]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x4a3362
mov esi, ecx
mov eax, ecx
shr eax, 0x10
and esi, 0xff0000
or esi, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr esi, 8
mov ecx, dword [esp + 0x50]
shl eax, 8
or esi, eax
cmp esi, ecx
jae 0x4a335e
lea eax, [esi + 0x15]
cmp eax, ecx
jae 0x4a335e
mov ebp, dword [esp + 0x4c]
push dword [esi + ebp]
call fcn.004a37c0
mov edx, eax
add esp, 4
cmp edx, 0xf42400
ja 0x4a32fa
lea ecx, [esi + 6]
add ecx, edx
cmp ecx, dword [esp + 0x50]
jbe 0x4a32fc
xor edx, edx
mov ax, word [esi + ebp + 4]
xor ecx, ecx
rol ax, 8
add ebp, 6
movzx eax, ax
add ebp, esi
test al, al
jns 0x4a3320
and eax, 0x20
or eax, 0x18
shr eax, 2
add ebp, eax
jmp 0x4a3344
mov ecx, eax
test al, 0x10
je 0x4a3338
or word [edi + 0x22], 1
and ecx, 0x20
or ecx, 0x1c
shr edx, 1
shr ecx, 2
jmp 0x4a333e
shr ecx, 2
and ecx, 8
test al, 0x20
je 0x4a3344
shr edx, 1
mov eax, dword [esp + 0x50]
sub eax, esi
mov dword [edi], edx
sub eax, 6
push eax
push ebp
mov ebp, dword [esp + 0x1c]
push ecx
push edi
mov ecx, ebp
call fcn.004960e0
mov eax, dword [esp + 0x30]
inc ebx
add edi, 0x40
cmp ebx, dword [ebp + 0xe924]
jb 0x4a3290
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x34]
cmp ebx, 0xf0
jbe 0x4a338b
mov ebx, 0xf0
mov dword [esp + 0x34], ebx
mov edx, dword [esp + 0x40]
test edx, edx
je 0x4a3770
lea eax, [ebx*4]
mov ecx, edi
sub ecx, eax
cmp edx, ecx
ja 0x4a3770
add edx, dword [esp + 0x4c]
xor eax, eax
cmp byte [esp + 0x13], 0x33
mov dword [esp + 0x1c], edx
setne al
dec eax
and eax, 0xffffffe8
add eax, 0x30
add dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x38], eax
test ebx, ebx
je 0x4a3732
lea esi, [ebp + 0xcac0]
lea ecx, [ebp + 0xce80]
mov dword [esp + 0x18], esi
mov dword [esp + 0x30], ecx
lea esp, [esp]
mov ecx, dword [edx + eax*4]
mov ebx, ecx
mov eax, ecx
and ebx, 0xff0000
shr eax, 0x10
or ebx, eax
mov eax, ecx
shl eax, 0x10
and ecx, 0xff00
or eax, ecx
shr ebx, 8
shl eax, 8
or ebx, eax
je 0x4a370d
cmp ebx, edi
jae 0x4a370d
lea eax, [edi - 8]
cmp ebx, eax
jae 0x4a370d
cmp byte [esp + 0x13], 0x30
jne 0x4a3533
mov ecx, dword [esp + 0x4c]
movzx eax, byte [ebx + ecx + 1]
movzx ebp, byte [ebx + ecx]
inc eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
test ebp, ebp
jne 0x4a345b
mov ebp, dword [ecx + 0xe910]
push dword [ecx + 0xe910]
push eax
call fcn.00495350
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x4a3709
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x4c]
add edi, 2
mov word [eax], dx
add edi, ebx
mov esi, dword [esi]
mov eax, ebp
imul eax, edx
lea ecx, [ebx + eax*2]
add ecx, eax
mov eax, dword [esp + 0x50]
add eax, 0xfffffffe
cmp ecx, eax
ja 0x4a372e
test edx, edx
je 0x4a3705
jmp 0x4a34b0
xor ebx, ebx
test ebp, ebp
je 0x4a3527
mov eax, dword [esp + 0x14]
lea ebx, [ebx]
cmp ebx, dword [eax + 0xe910]
jae 0x4a351b
mov al, byte [edi]
mov cl, byte [edi + 1]
mov dl, al
and dl, 0x3f
shr cl, 4
test al, al
jns 0x4a34dc
or cl, 0x10
test al, 0x40
je 0x4a34e3
or cl, 0x20
test dl, dl
je 0x4a34f4
cmp dl, 0x84
ja 0x4a34f4
mov al, byte [esp + 0x24]
add al, dl
mov byte [esi], al
push dword [esp + 0x28]
mov byte [esi + 1], cl
movzx eax, byte [edi + 1]
and al, 0xf
mov byte [esi + 3], al
movzx eax, byte [edi + 2]
push esi
mov byte [esi + 5], al
call fcn.004a2550
mov eax, dword [esp + 0x1c]
add esp, 8
add esi, 6
inc ebx
add edi, 3
cmp ebx, ebp
jb 0x4a34c0
mov edx, dword [esp + 0x2c]
dec edx
mov dword [esp + 0x2c], edx
jne 0x4a34b0
jmp 0x4a3705
mov eax, dword [esp + 0x4c]
xor ebp, ebp
movzx edi, byte [ebx + eax + 3]
movzx esi, byte [ebx + eax + 1]
inc edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x2c], esi
test esi, esi
jne 0x4a355e
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0xe910]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x14]
push dword [eax + 0xe910]
push edi
call fcn.00495350
mov esi, dword [esp + 0x20]
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x4a3705
mov eax, dword [esp + 0x30]
mov word [eax], di
mov edi, dword [esp + 0x4c]
push dword [ebx + edi + 4]
call fcn.004a37c0
add esp, 4
test eax, eax
je 0x4a363e
mov ecx, dword [esp + 0x50]
add ecx, 0xffffffdc
cmp eax, ecx
jae 0x4a363e
add edi, eax
mov eax, dword [edi + 4]
test eax, eax
je 0x4a35f9
cmp dword [edi + 8], ebp
je 0x4a35f9
push eax
call fcn.004a37c0
mov esi, eax
add esp, 4
cmp esi, dword [esp + 0x50]
jae 0x4a35f5
push dword [edi + 8]
call fcn.004a37c0
mov ecx, dword [esp + 0x54]
add esp, 4
add ecx, esi
cmp eax, ecx
jae 0x4a35f5
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
add eax, esi
push eax
push dword [esp + 0x3c]
call fcn.00496dc0
mov esi, dword [esp + 0x18]
mov eax, dword [edi + 0x10]
test eax, eax
je 0x4a363e
push eax
call fcn.004a37c0
mov edi, dword [esp + 0x54]
add esp, 4
lea ecx, [edi - 4]
cmp eax, ecx
jae 0x4a363e
mov ecx, dword [esp + 0x4c]
push dword [eax + ecx]
call fcn.004a37c0
add esp, 4
test eax, eax
je 0x4a363e
mov edx, dword [esp + 0x2c]
mov ecx, edi
imul edx, dword [esp + 0x20]
sub ecx, edx
cmp eax, ecx
ja 0x4a363e
mov ebp, dword [esp + 0x4c]
add ebp, eax
mov edx, dword [esp + 0x2c]
mov eax, edx
imul eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
mov edi, dword [esp + 0x44]
add ecx, 0xfffffff8
mov esi, dword [esi]
add edi, ebx
lea eax, [ebx + eax*4]
cmp eax, ecx
ja 0x4a372e
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4a3705
nop
xor ebx, ebx
test edx, edx
je 0x4a36f4
mov eax, dword [esp + 0x14]
lea ebx, [ebx]
cmp ebx, dword [eax + 0xe910]
jae 0x4a36e8
mov al, byte [edi]
test al, al
je 0x4a36b1
cmp al, 0x84
ja 0x4a36b1
movzx eax, al
add eax, dword [esp + 0x24]
cmp eax, 1
jge 0x4a36a5
mov eax, 1
jmp 0x4a36af
cmp eax, 0x78
jle 0x4a36af
mov eax, 0x78
mov byte [esi], al
movzx eax, byte [edi + 1]
mov byte [esi + 1], al
movzx eax, byte [edi + 2]
mov byte [esi + 3], al
movzx eax, byte [edi + 3]
mov byte [esi + 5], al
test ebp, ebp
je 0x4a36d0
mov al, byte [ebx + ebp]
mov byte [esi + 4], al
push dword [esp + 0x28]
push esi
call fcn.004a2550
mov edx, dword [esp + 0x34]
add esp, 8
mov eax, dword [esp + 0x14]
add esi, 6
inc ebx
add edi, 4
cmp ebx, edx
jb 0x4a3680
mov eax, dword [esp + 0x20]
test ebp, ebp
je 0x4a36fa
add ebp, edx
dec eax
mov dword [esp + 0x20], eax
jne 0x4a3670
mov edi, dword [esp + 0x50]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
add dword [esp + 0x18], 4
inc eax
add dword [esp + 0x30], 2
mov esi, dword [esp + 0x18]
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x34]
jb 0x4a33f0
mov ebp, dword [esp + 0x14]
xor ecx, ecx
cmp dword [ebp + 0xe910], ecx
jbe 0x4a3770
lea edx, [ebp + 0xc1c4]
mov eax, ecx
and eax, 3
cmp eax, 1
je 0x4a3756
cmp eax, 2
mov eax, 0x40
jne 0x4a375b
mov eax, 0xc0
mov dword [edx - 4], eax
inc ecx
mov dword [edx], 0x40
add edx, 0x24
cmp ecx, dword [ebp + 0xe910]
jb 0x4a3742
pop esi
pop edi
pop ebp
mov eax, 1
pop ebx
add esp, 0x38
ret 8
pop esi
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 0x38
ret 8
pop edi
pop ebp
xor eax, eax
pop ebx
add esp, 0x38
ret 8