Function at 0x47e8d0
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 0x47f60b
mov ebx, dword [esp + 0x4c]
cmp ebx, 0x200
jb 0x47f60b
mov eax, dword [edi]
and eax, 0xffffff
cmp eax, 0x444d4d
jne 0x47f60b
mov ecx, dword [edi + 8]
lea eax, [edi + 8]
mov dword [esp + 0x40], eax
test ecx, ecx
je 0x47f60b
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 0x47f5ff
lea eax, [esi + 0x314]
cmp eax, ebx
jae 0x47f5ff
mov al, byte [edi + 3]
mov byte [esp + 0x13], al
sub al, 0x30
cmp al, 3
ja 0x47f5ff
mov dword [ebp + 0xe920], 8
mov dword [ebp + 0xe964], 0x20
push dword [edi + 0x10]
call fcn.0047f640
push dword [edi + 0x18]
mov dword [esp + 0x48], eax
call fcn.0047f640
push dword [edi + 0x20]
mov dword [esp + 0x48], eax
call fcn.0047f640
add esp, 0xc
test eax, eax
je 0x47e9ae
lea ecx, [ebx - 0x50]
cmp eax, ecx
jae 0x47e9ae
add eax, edi
jmp 0x47e9b0
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 0x47e9f2
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 0x47ea13
mov ecx, 0x7d
mov al, byte [esi + 0x300]
test al, 0x20
je 0x47ea33
movzx edx, al
and edx, 0x1f
inc edx
jne 0x47ea2b
mov edx, 4
imul edx, ecx
shr edx, 2
jmp 0x47ea62
test byte [esi + 0x2ff], 0x40
je 0x47ea4d
lea eax, [ecx - 1]
cmp eax, 9
ja 0x47ea4d
movzx edx, byte [ecx + 0x52389f]
jmp 0x47ea62
push 0xe79ac
push 0x369e99
push ecx
call fcn.00479560
add esp, 0xc
mov edx, eax
movzx ecx, byte [esi + 0x301]
mov dword [ebp + 0xe900], ecx
test ecx, ecx
jne 0x47ea7d
mov dword [ebp + 0xe900], 6
cmp edx, 0x21
jae 0x47ea89
mov edx, 0x21
jmp 0x47ead8
cmp edx, 0xff
jbe 0x47ead8
cmp dword [ebp + 0xe900], 3
jbe 0x47eacb
lea ebx, [ebx]
cmp edx, 0x104
jbe 0x47eac7
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 0x47eaa0
mov esi, dword [esp + 0x28]
cmp edx, 0xff
jbe 0x47ead8
mov edx, 0xff
xor edi, edi
mov dword [ebp + 0xe904], edx
mov ebx, 0x100
cmp dword [ebp + 0xe924], edi
jbe 0x47eb71
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 0x47eb3d
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 0x47eb62
or word [edx + 4], 2
inc edi
add edx, 0x40
add esi, 8
cmp edi, dword [ebp + 0xe924]
jb 0x47eb00
mov esi, dword [esp + 0x28]
test byte [esi + 0x2ff], 0x20
jne 0x47eb85
or dword [ebp + 0xe90c], 2
cmp byte [esp + 0x13], 0x32
jge 0x47ebd1
movzx eax, byte [esi + 0x1fb]
cmp eax, 0x100
jb 0x47eba1
mov eax, 0xff
jmp 0x47ebaa
test eax, eax
jne 0x47ebaa
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 0x47ed8e
mov ax, word [esi + 0x208]
rol ax, 8
movzx ecx, ax
lea eax, [ecx - 4]
cmp eax, 0x1c
ja 0x47ebed
mov dword [ebp + 0xe910], ecx
push dword [esi + 0x1fc]
call fcn.0047f640
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.0047f640
mov edx, eax
add esp, 8
mov eax, dword [esp + 0x50]
mov dword [esp + 0x18], edx
test edi, edi
je 0x47ec37
test edx, edx
je 0x47ec37
lea ecx, [eax - 2]
cmp edx, ecx
jb 0x47ec40
mov edi, 1
mov dword [esp + 0x20], edi
xor esi, esi
xor ebx, ebx
mov dword [esp + 0x38], esi
test edi, edi
je 0x47ed53
xor ecx, ecx
test edx, edx
je 0x47ec6f
add eax, 0xfffffffe
cmp edx, eax
jae 0x47ec6f
mov eax, dword [esp + 0x4c]
movzx ecx, byte [edx + eax + 1]
add edx, 2
mov dword [esp + 0x18], edx
jmp 0x47ec75
xor edi, edi
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x50]
test ebp, ebp
je 0x47ed46
cmp ebp, eax
jae 0x47ed46
shl ecx, 2
sub eax, ebp
cmp ecx, eax
jae 0x47ed42
lea eax, [ecx + ebp]
mov ecx, dword [esp + 0x4c]
push dword [eax + ecx]
call fcn.0047f640
mov ebp, eax
add esp, 4
mov eax, dword [esp + 0x50]
test ebp, ebp
je 0x47f046
lea ecx, [eax - 0x42a]
cmp ebp, ecx
jae 0x47f046
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x4c]
add edi, 0xe99c
add eax, ebp
cmp byte [edi], 0
jne 0x47ece9
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 0x47ed36
test edx, edx
je 0x47ed36
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 0x47ed30
cmp ebx, 0xff
jae 0x47ed30
mov byte [ebx + edi + 0xd060], cl
inc ebx
add eax, 2
dec edx
jne 0x47ed18
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 0x47ec50
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
movsx eax, byte [esi + 0x2fe]
mov dword [esp + 0x24], eax
cmp ebx, 0x100
jae 0x47ed8e
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 0x47f0d2
cmp dword [ebp + 0xe910], 4
jne 0x47ede0
test byte [esi + 0x2ff], 0x40
je 0x47ede0
cmp byte [ebx + 0x24], 0
je 0x47edbc
mov dword [ebp + 0xe910], 3
cmp byte [ebx + 0x25], 0
je 0x47edc8
dec dword [ebp + 0xe910]
cmp byte [ebx + 0x26], 0
je 0x47edd4
dec dword [ebp + 0xe910]
cmp byte [ebx + 0x27], 0
je 0x47ede0
dec dword [ebp + 0xe910]
push dword [ebx + 0xc]
call fcn.0047f640
push dword [ebx + 0x10]
mov edi, eax
call fcn.0047f640
add esp, 8
mov esi, eax
test edi, edi
je 0x47ee36
test esi, esi
je 0x47ee36
lea eax, [esi + edi]
cmp eax, edi
jbe 0x47ee36
cmp eax, dword [esp + 0x50]
ja 0x47ee36
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.0047f640
push dword [ebx + 0x30]
mov esi, eax
call fcn.0047f640
mov edi, dword [esp + 0x58]
add esp, 8
test esi, esi
je 0x47ee8a
test eax, eax
je 0x47ee8a
lea ecx, [eax + esi]
cmp ecx, esi
jbe 0x47ee8a
cmp ecx, edi
ja 0x47ee8a
cmp eax, 0x1f
jbe 0x47ee6c
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.0047f640
mov esi, eax
add esp, 4
test esi, esi
je 0x47ef35
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 0x47ef31
mov ecx, ebp
imul ecx, edx
cmp ecx, edi
jae 0x47ef31
mov eax, edi
sub eax, ecx
cmp esi, eax
jae 0x47ef31
mov ebx, dword [esp + 0x4c]
mov eax, ebp
add ebx, esi
mov dword [esp + 0x38], ebp
cmp ebp, 0x20
jbe 0x47eeec
mov eax, 0x20
mov dword [esp + 0x38], eax
xor esi, esi
test edx, edx
je 0x47ef2d
mov ecx, dword [esp + 0x14]
lea edi, [ecx + 0xe9db]
lea esp, [esp]
cmp esi, dword [ecx + 0xe924]
jae 0x47ef1f
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 0x47ef00
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 0x47f0da
cmp edx, edi
jae 0x47f0da
mov esi, dword [ebp + 0xe910]
mov ecx, edi
sub ecx, edx
lea eax, [esi*4]
cmp eax, ecx
jae 0x47f0da
xor eax, eax
lea ecx, [edx + ebx]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x38], eax
test esi, esi
je 0x47f0da
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.0047f640
mov edi, eax
add esp, 4
test edi, edi
je 0x47f0a8
mov eax, dword [esp + 0x50]
add eax, 0xfffffff8
cmp edi, eax
jae 0x47f0a8
jmp 0x47efe0
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 0x47f06b
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 0x47f053
cmp edx, 0x80000001
jne 0x47f055
mov ebp, esi
jmp 0x47f055
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
jmp 0x47ed46
mov ebx, esi
mov eax, dword [esp + 0x50]
add edi, 8
add eax, 0xfffffff8
cmp edi, eax
jb 0x47efe0
mov esi, dword [esp + 0x4c]
cmp ebx, 0x14
jbe 0x47f075
mov ebx, 0x14
mov edi, dword [esp + 0x50]
test ebp, ebp
je 0x47f0a2
cmp ebx, edi
jae 0x47f0a2
mov eax, edi
sub eax, ebx
cmp ebp, eax
jae 0x47f0a2
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 0x47f0ac
mov esi, dword [esp + 0x20]
jmp 0x47f0ac
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 0x47efb0
jmp 0x47f0d6
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 0x47f5f0
add eax, ebx
xor ebx, ebx
mov dword [esp + 0x30], eax
test edx, edx
je 0x47f1f6
lea edi, [ebp + 0x8240]
lea ecx, [ecx]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x47f1e2
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 0x47f1de
lea eax, [esi + 0x15]
cmp eax, ecx
jae 0x47f1de
mov ebp, dword [esp + 0x4c]
push dword [esi + ebp]
call fcn.0047f640
mov edx, eax
add esp, 4
cmp edx, 0xf42400
ja 0x47f17a
lea ecx, [esi + 6]
add ecx, edx
cmp ecx, dword [esp + 0x50]
jbe 0x47f17c
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 0x47f1a0
and eax, 0x20
or eax, 0x18
shr eax, 2
add ebp, eax
jmp 0x47f1c4
mov ecx, eax
test al, 0x10
je 0x47f1b8
or word [edi + 0x22], 1
and ecx, 0x20
or ecx, 0x1c
shr edx, 1
shr ecx, 2
jmp 0x47f1be
shr ecx, 2
and ecx, 8
test al, 0x20
je 0x47f1c4
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.00471f60
mov eax, dword [esp + 0x30]
inc ebx
add edi, 0x40
cmp ebx, dword [ebp + 0xe924]
jb 0x47f110
mov edi, dword [esp + 0x50]
mov ebx, dword [esp + 0x34]
cmp ebx, 0xf0
jbe 0x47f20b
mov ebx, 0xf0
mov dword [esp + 0x34], ebx
mov edx, dword [esp + 0x40]
test edx, edx
je 0x47f5f0
lea eax, [ebx*4]
mov ecx, edi
sub ecx, eax
cmp edx, ecx
ja 0x47f5f0
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 0x47f5b2
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 0x47f58d
cmp ebx, edi
jae 0x47f58d
lea eax, [edi - 8]
cmp ebx, eax
jae 0x47f58d
cmp byte [esp + 0x13], 0x30
jne 0x47f3b3
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 0x47f2db
mov ebp, dword [ecx + 0xe910]
push dword [ecx + 0xe910]
push eax
call fcn.004711d0
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x47f589
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 0x47f5ae
test edx, edx
je 0x47f585
jmp 0x47f330
xor ebx, ebx
test ebp, ebp
je 0x47f3a7
mov eax, dword [esp + 0x14]
lea ebx, [ebx]
cmp ebx, dword [eax + 0xe910]
jae 0x47f39b
mov al, byte [edi]
mov cl, byte [edi + 1]
mov dl, al
and dl, 0x3f
shr cl, 4
test al, al
jns 0x47f35c
or cl, 0x10
test al, 0x40
je 0x47f363
or cl, 0x20
test dl, dl
je 0x47f374
cmp dl, 0x84
ja 0x47f374
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.0047e3d0
mov eax, dword [esp + 0x1c]
add esp, 8
add esi, 6
inc ebx
add edi, 3
cmp ebx, ebp
jb 0x47f340
mov edx, dword [esp + 0x2c]
dec edx
mov dword [esp + 0x2c], edx
jne 0x47f330
jmp 0x47f585
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 0x47f3de
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.004711d0
mov esi, dword [esp + 0x20]
add esp, 8
mov dword [esi], eax
test eax, eax
je 0x47f585
mov eax, dword [esp + 0x30]
mov word [eax], di
mov edi, dword [esp + 0x4c]
push dword [ebx + edi + 4]
call fcn.0047f640
add esp, 4
test eax, eax
je 0x47f4be
mov ecx, dword [esp + 0x50]
add ecx, 0xffffffdc
cmp eax, ecx
jae 0x47f4be
add edi, eax
mov eax, dword [edi + 4]
test eax, eax
je 0x47f479
cmp dword [edi + 8], ebp
je 0x47f479
push eax
call fcn.0047f640
mov esi, eax
add esp, 4
cmp esi, dword [esp + 0x50]
jae 0x47f475
push dword [edi + 8]
call fcn.0047f640
mov ecx, dword [esp + 0x54]
add esp, 4
add ecx, esi
cmp eax, ecx
jae 0x47f475
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x14]
add eax, esi
push eax
push dword [esp + 0x3c]
call fcn.00472c40
mov esi, dword [esp + 0x18]
mov eax, dword [edi + 0x10]
test eax, eax
je 0x47f4be
push eax
call fcn.0047f640
mov edi, dword [esp + 0x54]
add esp, 4
lea ecx, [edi - 4]
cmp eax, ecx
jae 0x47f4be
mov ecx, dword [esp + 0x4c]
push dword [eax + ecx]
call fcn.0047f640
add esp, 4
test eax, eax
je 0x47f4be
mov edx, dword [esp + 0x2c]
mov ecx, edi
imul edx, dword [esp + 0x20]
sub ecx, edx
cmp eax, ecx
ja 0x47f4be
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 0x47f5ae
mov eax, dword [esp + 0x20]
test eax, eax
je 0x47f585
nop
xor ebx, ebx
test edx, edx
je 0x47f574
mov eax, dword [esp + 0x14]
lea ebx, [ebx]
cmp ebx, dword [eax + 0xe910]
jae 0x47f568
mov al, byte [edi]
test al, al
je 0x47f531
cmp al, 0x84
ja 0x47f531
movzx eax, al
add eax, dword [esp + 0x24]
cmp eax, 1
jge 0x47f525
mov eax, 1
jmp 0x47f52f
cmp eax, 0x78
jle 0x47f52f
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 0x47f550
mov al, byte [ebx + ebp]
mov byte [esi + 4], al
push dword [esp + 0x28]
push esi
call fcn.0047e3d0
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 0x47f500
mov eax, dword [esp + 0x20]
test ebp, ebp
je 0x47f57a
add ebp, edx
dec eax
mov dword [esp + 0x20], eax
jne 0x47f4f0
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 0x47f270
mov ebp, dword [esp + 0x14]
xor ecx, ecx
cmp dword [ebp + 0xe910], ecx
jbe 0x47f5f0
lea edx, [ebp + 0xc1c4]
mov eax, ecx
and eax, 3
cmp eax, 1
je 0x47f5d6
cmp eax, 2
mov eax, 0x40
jne 0x47f5db
mov eax, 0xc0
mov dword [edx - 4], eax
inc ecx
mov dword [edx], 0x40
add edx, 0x24
cmp ecx, dword [ebp + 0xe910]
jb 0x47f5c2
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