Function at 0x4bd080
Capabilities:
Get geographical location

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x73c
mov ecx, dword [ebp + 0x10]
xor eax, eax
push ebx
test ecx, ecx
mov dword [esp + 8], eax
mov ebx, ecx
sete cl
mov dword [esp + 0x18], ebx
test byte [0x547e54], 1
push esi
push edi
mov dword [esp + 0x14], ecx
jne 0x4bd1bb
mov edi, 0x547e54
lock bts dword [edi], 0x1f
jae 0x4bd0db
test byte [0x547e54], 1
jne 0x4bd1bb
xor edx, edx
mov ecx, edi
call sym.ProcessHacker.exe_PhfWaitForEvent
jmp 0x4bd1b5
push 4
lea eax, [esp + 0x5c]
push eax
push 0xe
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x4bd117
mov ax, word [esp + 0x58]
test ax, ax
je 0x4bd117
movzx ecx, word [0x547e5c]
cmp word [esp + 0x5a], 0
movzx eax, ax
cmove ecx, eax
mov word [0x547e5c], cx
push 4
lea eax, [esp + 0x5c]
push eax
push 0xf
push 0x400
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoW]
test eax, eax
je 0x4bd153
mov ax, word [esp + 0x58]
test ax, ax
je 0x4bd153
movzx ecx, word [0x547e98]
cmp word [esp + 0x5a], 0
movzx eax, ax
cmove ecx, eax
mov word [0x547e98], cx
cmp word [0x547e5c], 0x2e
je 0x4bd171
push 0x52cd46
push 0
call fcn.004e3f89
add esp, 8
mov dword [0x54b460], eax
lock bts dword [edi], 0
jb 0x4bd1b5
mov esi, dword [0x547e58]
test esi, esi
je 0x4bd18b
push 0
push esi
call dword [sym.imp.ntdll.dll_NtSetEvent]
mov eax, 0xfffffffe
lock xadd dword [edi], eax
shr eax, 1
and eax, 0x7fff
sub eax, 1
jne 0x4bd1b5
test esi, esi
je 0x4bd1b5
push esi
call dword [sym.imp.ntdll.dll_NtClose]
mov dword [0x547e58], 0
mov ecx, dword [esp + 0x14]
xor eax, eax
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x14]
test edi, edi
je 0x4bdfbb
fld qword [0x538050]
fld qword [0x537fe0]
mov dword [esp + 0x14], ecx
mov dword [esp + 0x54], 3
mov edx, dword [ebp + 8]
dec edi
mov dword [ebp + 0xc], edi
mov ecx, edx
mov edi, edx
mov dword [esp + 0x48], eax
mov esi, edx
mov dword [esp + 0x3c], edi
add edx, 0x18
mov dword [esp + 0x18], 0
mov dword [ebp + 8], edx
mov edx, dword [edi]
mov eax, edx
and eax, 0x3f
mov dword [esp + 0x28], edx
cmp eax, 0xc
ja case.default.0x4bd218
jmp dword [eax*4 + 0x4be004]
cmp byte [esp + 0x14], 0
fstp st(1)
fstp st(0)
jne 0x4bdc62
mov eax, dword [esp + 0x10]
add eax, 2
cmp dword [ebp + 0x14], eax
jae 0x4bd256
mov eax, dword [esp + 0x10]
add ebx, 2
add eax, 2
mov byte [esp + 0x14], 1
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
mov ax, word [edi + 0x10]
jmp 0x4bdc5f
cmp byte [esp + 0x14], 0
fstp st(1)
fstp st(0)
jne 0x4bd2a4
mov eax, dword [esp + 0x10]
mov ecx, dword [edi + 0x10]
add eax, ecx
cmp dword [ebp + 0x14], eax
jae 0x4bd297
mov eax, ecx
mov byte [esp + 0x14], 1
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
push ecx
push dword [edi + 0x14]
push ebx
call fcn.004dd620
add esp, 0xc
mov eax, dword [edi + 0x10]
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, dword [edi + 0x10]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
push dword [edi + 0x10]
fstp st(1)
fstp st(0)
call sym.ProcessHacker.exe_PhCountStringZ
cmp byte [esp + 0x14], 0
lea esi, [eax + eax]
jne 0x4bd30d
mov eax, dword [esp + 0x10]
add eax, esi
cmp dword [ebp + 0x14], eax
jae 0x4bd300
mov eax, esi
mov byte [esp + 0x14], 1
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
push esi
push dword [edi + 0x10]
push ebx
call fcn.004dd620
add esp, 0xc
mov eax, esi
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
fstp st(1)
fstp st(0)
cmp edx, 3
jne 0x4bd33c
mov eax, dword [esp + 0x3c]
mov edi, dword [edi + 0x14]
mov esi, dword [eax + 0x10]
jmp 0x4bd34d
mov edi, dword [edi + 0x10]
mov esi, edi
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4bd344
sub esi, ecx
push esi
push edi
lea eax, [esp + 0x54]
push eax
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeSize]
test eax, eax
js 0x4bdee6
cmp byte [esp + 0x14], 0
jne 0x4bd3ab
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
add eax, ecx
cmp dword [ebp + 0x14], eax
jae 0x4bd397
mov eax, ecx
mov byte [esp + 0x14], 1
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
push esi
push edi
push 0
push ecx
push ebx
call dword [sym.imp.ntdll.dll_RtlMultiByteToUnicodeN]
test eax, eax
js 0x4bdee6
mov ecx, dword [esp + 0x4c]
mov eax, ecx
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
mov eax, dword [ecx + 0x10]
mov ecx, eax
cdq
mov esi, eax
shr ecx, 0x1f
xor esi, edx
mov dword [esp + 0x18], ecx
sub esi, edx
mov edx, dword [esp + 0x28]
jmp 0x4bd3e5
mov esi, dword [edi + 0x10]
fstp st(1)
fstp st(0)
mov dword [esp + 0x40], 0xa
test edx, 0x100
je 0x4bd40a
mov cl, byte [edi + 0xa]
lea eax, [ecx - 2]
cmp al, 0x43
ja 0x4bd40a
movzx eax, cl
mov dword [esp + 0x40], eax
test edx, 0x20000000
mov ecx, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
mov eax, str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
cmovne eax, ecx
xor edi, edi
mov dword [esp + 0x30], eax
lea ecx, [esp + 0x486]
test esi, esi
je 0x4bd4b1
test edx, 0x10000
je 0x4bd48d
xor eax, eax
mov dword [esp + 0x1c], eax
mov eax, esi
xor edx, edx
div dword [esp + 0x40]
inc edi
mov esi, eax
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x30]
movsx ax, byte [eax + edx]
mov word [ecx], ax
sub ecx, 2
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp eax, 3
jne 0x4bd487
test esi, esi
je 0x4bd4ce
mov ax, word [0x547e98]
inc edi
mov word [ecx], ax
sub ecx, 2
xor eax, eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], eax
test esi, esi
jne 0x4bd440
jmp 0x4bd4ce
mov ebx, dword [esp + 0x30]
mov eax, esi
xor edx, edx
div dword [esp + 0x40]
inc edi
mov esi, eax
movsx ax, byte [ebx + edx]
mov word [ecx], ax
sub ecx, 2
test esi, esi
jne 0x4bd491
mov ebx, dword [esp + 0x20]
jmp 0x4bd4ca
mov eax, 0x30
lea ecx, [esp + 0x484]
mov word [esp + 0x486], ax
mov edi, 1
mov dword [esp + 0x2c], edi
mov esi, dword [esp + 0x28]
xor edx, edx
cmp dword [esp + 0x18], edx
je 0x4bd4e1
mov edx, 1
jmp 0x4bd4ef
test esi, 0x20000
mov eax, 1
cmovne edx, eax
mov eax, esi
mov dword [esp + 0x1c], edx
and eax, 0x50000
cmp eax, 0x40000
jne 0x4bd527
mov eax, dword [esp + 0x3c]
movzx esi, word [eax + 6]
lea eax, [edx + edi]
cmp eax, esi
jae 0x4bd523
or dword [esp + 0x18], 4
sub esi, edx
sub esi, edi
add edx, esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x28]
add ecx, 2
cmp byte [esp + 0x14], 0
mov dword [esp + 0x24], ecx
jne 0x4bd5c0
lea eax, [edx + edi]
mov edx, dword [esp + 0x10]
lea eax, [edx + eax*2]
cmp dword [ebp + 0x14], eax
jae 0x4bd561
mov eax, dword [esp + 0x1c]
mov ecx, edx
add eax, edi
mov byte [esp + 0x14], 1
lea ecx, [ecx + eax*2]
mov dword [esp + 0x10], ecx
jmp 0x4bdee6
mov eax, dword [esp + 0x18]
test al, 1
je 0x4bd570
mov edx, 0x2d
jmp 0x4bd57d
test esi, 0x20000
je 0x4bd583
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x4bd5ac
mov edx, dword [esp + 0x60]
test edx, edx
je 0x4bd5a9
mov ecx, edx
mov eax, 0x300030
shr ecx, 1
mov edi, ebx
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
lea ebx, [ebx + edx*2]
lea esi, [edi + edi]
push esi
push ecx
push ebx
call fcn.004dd620
add esp, 0xc
add ebx, esi
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
add eax, edi
lea ecx, [ecx + eax*2]
mov dword [esp + 0x10], ecx
jmp 0x4bdee6
mov esi, dword [edi + 0x14]
fstp st(1)
mov ecx, dword [edi + 0x10]
fstp st(0)
mov dword [esp + 0x40], ecx
test esi, esi
jg 0x4bd60d
jl 0x4bd5ee
test ecx, ecx
jae 0x4bd60d
neg ecx
mov dword [esp + 0x18], 1
adc esi, 0
neg esi
jmp 0x4bd609
mov ecx, dword [edi + 0x10]
fstp st(1)
mov esi, dword [edi + 0x14]
fstp st(0)
mov dword [esp + 0x40], ecx
mov edi, dword [esp + 0x28]
mov edx, 0xa
mov dword [esp + 0x2c], edx
mov dword [esp + 0x1c], 0
test edi, 0x100
je 0x4bd65d
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x2c], 0xa
mov dword [esp + 0x1c], 0
mov dl, byte [eax + 0xa]
lea eax, [edx - 2]
cmp al, 0x43
ja 0x4bd658
movzx eax, dl
cdq
mov dword [esp + 0x1c], edx
mov edx, eax
mov dword [esp + 0x2c], eax
jmp 0x4bd65d
mov edx, 0xa
test edi, 0x20000000
mov eax, str.0123456789abcdefghijklmnopqrstuvwxyz_________._:_________
mov edi, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_________._:_________
cmovne eax, edi
lea edi, [esp + 0x486]
mov dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x38], eax
mov eax, ecx
or eax, esi
je 0x4bd75a
test dword [esp + 0x28], 0x10000
mov ebx, dword [esp + 0x40]
je 0x4bd720
xor eax, eax
mov dword [esp + 0x30], eax
push ebx
push dword [esp + 0x20]
push edx
push esi
push ebx
call fcn.004f8700
mov dword [esp + 0x48], ebx
pop ebx
mov ebx, eax
mov esi, edx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x30]
inc edx
mov dword [esp + 0x30], edx
movsx cx, byte [eax + ecx]
mov word [edi], cx
sub edi, 2
mov ecx, dword [esp + 0x38]
inc ecx
mov dword [esp + 0x38], ecx
cmp edx, 3
jne 0x4bd6fc
mov eax, ebx
or eax, esi
je 0x4bd706
mov ax, word [0x547e98]
inc ecx
mov word [edi], ax
sub edi, 2
xor eax, eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
jne 0x4bd6a3
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x28]
xor edx, edx
cmp dword [esp + 0x18], edx
je 0x4bd779
mov edx, 1
jmp 0x4bd787
push ebx
push dword [esp + 0x20]
push edx
push esi
push ebx
call fcn.004f8700
mov dword [esp + 0x38], ebx
pop ebx
mov ebx, eax
mov esi, edx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
movsx ax, byte [eax + ecx]
mov ecx, dword [esp + 0x38]
inc ecx
mov dword [esp + 0x38], ecx
mov word [edi], ax
mov eax, ebx
sub edi, 2
or eax, esi
jne 0x4bd720
jmp 0x4bd706
mov eax, 0x30
lea edi, [esp + 0x484]
mov ecx, 1
mov word [esp + 0x486], ax
mov dword [esp + 0x38], ecx
jmp 0x4bd70a
test esi, 0x20000
mov eax, 1
cmovne edx, eax
mov eax, esi
mov dword [esp + 0x30], edx
and eax, 0x50000
cmp eax, 0x40000
jne 0x4bd7bf
mov eax, dword [esp + 0x3c]
movzx esi, word [eax + 6]
lea eax, [edx + ecx]
cmp eax, esi
jae 0x4bd7bb
or dword [esp + 0x18], 4
sub esi, edx
sub esi, ecx
add edx, esi
mov dword [esp + 0x64], esi
mov dword [esp + 0x30], edx
mov esi, dword [esp + 0x28]
add edi, 2
cmp byte [esp + 0x14], 0
mov dword [esp + 0x24], edi
jne 0x4bd85a
lea eax, [edx + ecx]
mov edx, dword [esp + 0x10]
lea eax, [edx + eax*2]
cmp dword [ebp + 0x14], eax
jae 0x4bd7fb
mov eax, dword [esp + 0x38]
mov ecx, edx
add eax, dword [esp + 0x30]
mov byte [esp + 0x14], 1
lea ecx, [ecx + eax*2]
mov dword [esp + 0x10], ecx
jmp 0x4bdee6
mov eax, dword [esp + 0x18]
test al, 1
je 0x4bd80a
mov edx, 0x2d
jmp 0x4bd817
test esi, 0x20000
je 0x4bd81d
mov edx, 0x2b
mov word [ebx], dx
add ebx, 2
test al, 4
je 0x4bd846
mov edx, dword [esp + 0x64]
test edx, edx
je 0x4bd843
mov ecx, edx
mov eax, 0x300030
shr ecx, 1
mov edi, ebx
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
lea ebx, [ebx + edx*2]
lea esi, [ecx + ecx]
push esi
push edi
push ebx
call fcn.004dd620
add esp, 0xc
add ebx, esi
mov dword [esp + 0x20], ebx
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x10]
add eax, dword [esp + 0x30]
lea ecx, [ecx + eax*2]
mov dword [esp + 0x10], ecx
jmp 0x4bdee6
mov dword [esp + 0x18], 0
fstp st(1)
fstp st(0)
test dl, 0x40
je 0x4bd897
movzx ecx, word [edi + 4]
mov eax, 0xa2
cmp ecx, 0xa2
cmova ecx, eax
jmp 0x4bd89c
mov ecx, 6
mov eax, edx
test edx, 0x1000
je 0x4bd8b1
mov dword [esp + 0x28], edx
mov edx, 0x65
jmp 0x4bd8c9
test dword [esp + 0x28], 0x2000
mov edx, 0x66
je 0x4bd8c9
mov dword [esp + 0x28], eax
mov edx, 0x61
push dword [0x54b460]
test dword [esp + 0x2c], 0x20000000
lea eax, [esp + 0x8d]
fld qword [edi + 0x10]
push 0
mov dword [esp + 0x38], eax
lea eax, [edx - 0x20]
push 0
push ecx
cmove eax, edx
push eax
push 0x15e
lea eax, [esp + 0x4a0]
push eax
push 0x3ff
lea eax, [esp + 0xa9]
push eax
lea eax, [esp + 0x9c]
push eax
fstp qword [esp + 0xa0]
call fcn.004e5643
mov ecx, dword [edi]
add esp, 0x28
mov dword [esp + 0x1c], ecx
test ecx, 0x8000
je 0x4bd942
lea ecx, [esp + 0x89]
call fcn.004bbcf0
mov ecx, dword [esi]
mov dword [esp + 0x1c], ecx
lea esi, [esp + 0x89]
lea edx, [esi + 1]
lea esp, [esp]
mov al, byte [esi]
inc esi
test al, al
jne 0x4bd950
sub esi, edx
cmp byte [esp + 0x89], 0x2d
mov dword [esp + 0x24], esi
jne 0x4bd981
lea edx, [esp + 0x8a]
mov dword [esp + 0x18], 1
dec esi
mov dword [esp + 0x30], edx
mov dword [esp + 0x24], esi
jmp 0x4bd99b
mov eax, dword [esp + 0x18]
test ecx, 0x20000
mov edx, 2
cmovne eax, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x18], eax
mov eax, ecx
and eax, 0x13000
cmp eax, 0x10000
jne 0x4bdaf5
mov al, byte [edx]
mov edi, edx
sub al, 0x30
mov dword [esp + 0x1c], edx
cmp al, 0xa
jae 0x4bd9ce
jmp 0x4bd9c0
mov al, byte [edi + 1]
inc edi
sub al, 0x30
cmp al, 0xa
jb 0x4bd9c0
mov dword [esp + 0x1c], edi
mov eax, edi
sub eax, edx
mov dword [esp + 0x40], eax
je 0x4bd9e9
lea ecx, [eax + 2]
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
shr eax, 1
dec eax
jmp 0x4bd9eb
xor eax, eax
lea ecx, [eax + esi]
mov dword [esp + 0x2c], eax
add ecx, ecx
cmp byte [esp + 0x14], 0
jne 0x4bda20
cmp dword [esp + 0x18], 0
lea eax, [ecx + 2]
cmove eax, ecx
mov ecx, dword [esp + 0x14]
add eax, dword [esp + 0x10]
cmp dword [ebp + 0x14], eax
mov eax, 1
movzx ecx, cl
cmovb ecx, eax
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x40]
xor edx, edx
mov ecx, eax
add eax, 2
div dword [esp + 0x54]
cmp byte [esp + 0x14], 0
mov eax, dword [esp + 0x18]
jne 0x4bdaa6
test al, 1
je 0x4bda45
mov edi, 0x2d
jmp 0x4bda4e
test al, 2
je 0x4bda5c
mov edi, 0x2b
mov word [ebx], di
add ebx, 2
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x20], ebx
cmp dword [esp + 0x40], 0
je 0x4bdaa6
mov esi, dword [esp + 0x30]
mov di, word [0x547e98]
mov edi, edi
movsx ax, byte [esi]
lea esi, [esi + 1]
dec ecx
mov word [ebx], ax
mov eax, edx
add ebx, 2
dec edx
test eax, eax
jne 0x4bda92
test ecx, ecx
je 0x4bda96
mov word [ebx], di
lea edx, [eax + 2]
add ebx, 2
test ecx, ecx
jne 0x4bda70
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x20], ebx
mov edx, dword [esp + 0x10]
test eax, eax
mov eax, dword [esp + 0x2c]
lea ecx, [edx + 2]
cmove ecx, edx
add eax, dword [esp + 0x40]
sub esi, dword [esp + 0x40]
cmp byte [esp + 0x14], 0
lea eax, [ecx + eax*2]
mov dword [esp + 0x10], eax
jne 0x4bdeea
push ebx
push esi
push edi
call sym.ProcessHacker.exe_PhZeroExtendToUtf16Buffer
lea ecx, [esi + esi]
mov eax, ecx
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
xor ecx, ecx
cmp dword [esp + 0x18], ecx
setne cl
test dword [esp + 0x1c], 0x40000
mov edi, ecx
mov dword [esp + 0x30], edi
je 0x4bdb3f
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x30], edi
movzx eax, word [eax + 6]
mov dword [esp + 0x24], eax
lea eax, [ecx + esi]
cmp eax, dword [esp + 0x24]
jae 0x4bdb3f
mov eax, dword [esp + 0x24]
or dword [esp + 0x18], 4
sub eax, ecx
sub eax, esi
mov dword [esp + 0x50], eax
lea edi, [ecx + eax]
mov dword [esp + 0x30], edi
cmp byte [esp + 0x14], 0
jne 0x4bdbab
mov ecx, dword [esp + 0x10]
lea eax, [edi + esi]
lea eax, [ecx + eax*2]
cmp dword [ebp + 0x14], eax
jae 0x4bdb5c
mov byte [esp + 0x14], 1
jmp 0x4bdbab
mov eax, dword [esp + 0x18]
test al, 1
je 0x4bdb6b
mov ecx, 0x2d
jmp 0x4bdb74
test al, 2
je 0x4bdb7e
mov ecx, 0x2b
mov word [ebx], cx
add ebx, 2
mov dword [esp + 0x20], ebx
test al, 4
je 0x4bdbab
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4bdba4
mov ecx, eax
mov edi, ebx
shr ecx, 1
mov eax, 0x300030
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x50]
lea ebx, [ebx + eax*2]
mov dword [esp + 0x20], ebx
cmp byte [esp + 0x14], 0
mov eax, dword [esp + 0x10]
lea eax, [eax + edi*2]
mov dword [esp + 0x10], eax
jne 0x4bdeea
push ebx
push esi
push edx
call sym.ProcessHacker.exe_PhZeroExtendToUtf16Buffer
lea ecx, [esi + esi]
mov eax, ecx
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
mov eax, dword [esp + 0x3c]
xor edi, edi
mov dword [esp + 0x70], edi
mov dword [esp + 0x24], edi
mov esi, dword [eax + 0x10]
mov edx, dword [eax + 0x14]
mov eax, edx
mov ecx, edx
mov dword [esp + 0x68], esi
and eax, 0x7fffffff
and ecx, 0x80000000
or esi, edx
mov dword [esp + 0x6c], eax
fild qword [esp + 0x68]
mov dword [esp + 0x74], ecx
fild qword [esp + 0x70]
fchs
faddp st(1)
jne 0x4bdc79
cmp byte [esp + 0x14], 0
fstp st(0)
fstp st(1)
fstp st(0)
jne 0x4bdc62
mov eax, dword [esp + 0x10]
add eax, 2
cmp dword [ebp + 0x14], eax
jae 0x4bdc5a
mov eax, dword [esp + 0x10]
add ebx, 2
add eax, 2
mov byte [esp + 0x14], 1
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
mov eax, 0x30
mov word [ebx], ax
mov eax, dword [esp + 0x10]
add ebx, 2
add eax, 2
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
test edx, 0x100
je 0x4bdc8f
movzx ecx, byte [esi + 0xa]
jmp 0x4bdc95
mov ecx, dword [0x5484ac]
fcomi st(2)
jb 0x4bdcad
cmp edi, 7
jae 0x4bdca9
cmp edi, ecx
jae 0x4bdca9
fmul st(1)
inc edi
fcomi st(2)
jae 0x4bdc99
mov dword [esp + 0x24], edi
fstp st(2)
fstp st(0)
test dl, 0x40
je 0x4bdcbc
movzx eax, word [esi + 4]
jmp 0x4bdcc1
mov eax, 2
push dword [0x54b460]
movzx eax, ax
mov ecx, 0xa2
push 0
cmp eax, 0xa2
mov dword [esp + 0x24], 0
push 0
cmova eax, ecx
lea ecx, [esp + 0x95]
push eax
push 0x66
push 0x15e
lea eax, [esp + 0x600]
mov dword [esp + 0x48], ecx
push eax
mov eax, ecx
push 0x3ff
push eax
lea eax, [esp + 0xa4]
push eax
fstp qword [esp + 0xa8]
call fcn.004e5643
add esp, 0x28
lea ecx, [esp + 0x89]
call fcn.004bbcf0
lea esi, [esp + 0x89]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4bdd33
sub esi, ecx
cmp byte [esp + 0x89], 0x2d
mov dword [esp + 0x2c], esi
jne 0x4bdd64
lea edx, [esp + 0x8a]
mov dword [esp + 0x1c], 1
dec esi
mov dword [esp + 0x30], edx
mov dword [esp + 0x2c], esi
jmp 0x4bdd68
mov edx, dword [esp + 0x30]
mov al, byte [edx]
mov ecx, edx
sub al, 0x30
mov dword [esp + 0x18], edx
cmp al, 0xa
jae 0x4bdd84
mov al, byte [ecx + 1]
inc ecx
sub al, 0x30
cmp al, 0xa
jb 0x4bdd76
mov dword [esp + 0x18], ecx
mov eax, ecx
sub eax, edx
mov dword [esp + 0x40], eax
je 0x4bdd9f
lea ecx, [eax + 2]
mov eax, 0xaaaaaaab
mul ecx
mov eax, edx
shr eax, 1
dec eax
jmp 0x4bdda1
xor eax, eax
mov edx, dword [esp + 0x14]
mov dword [esp + 0x38], eax
add eax, esi
add eax, eax
test dl, dl
jne 0x4bddd2
cmp dword [esp + 0x1c], 0
lea ecx, [eax + 2]
cmove ecx, eax
movzx eax, dl
add ecx, dword [esp + 0x10]
cmp dword [ebp + 0x14], ecx
mov ecx, 1
cmovb eax, ecx
mov byte [esp + 0x14], al
mov eax, dword [esp + 0x40]
xor edx, edx
mov ecx, eax
add eax, 2
div dword [esp + 0x54]
cmp byte [esp + 0x14], 0
jne 0x4bde3e
cmp dword [esp + 0x1c], 0
je 0x4bddfa
mov eax, 0x2d
mov word [ebx], ax
add ebx, 2
cmp dword [esp + 0x40], 0
je 0x4bde3e
mov esi, dword [esp + 0x30]
mov di, word [0x547e98]
lea esp, [esp]
movsx ax, byte [esi]
lea esi, [esi + 1]
dec ecx
mov word [ebx], ax
mov eax, edx
add ebx, 2
dec edx
test eax, eax
jne 0x4bde32
test ecx, ecx
je 0x4bde36
mov word [ebx], di
lea edx, [eax + 2]
add ebx, 2
test ecx, ecx
jne 0x4bde10
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x1c], 0
lea ecx, [eax + 2]
cmove ecx, eax
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x40]
sub esi, dword [esp + 0x40]
cmp byte [esp + 0x14], 0
lea edx, [ecx + eax*2]
mov dword [esp + 0x30], edx
jne 0x4bdec4
push ebx
push esi
push dword [esp + 0x20]
call sym.ProcessHacker.exe_PhZeroExtendToUtf16Buffer
mov edx, dword [esp + 0x30]
lea ecx, [esi + esi]
mov eax, ecx
add edx, ecx
shr eax, 1
mov dword [esp + 0x30], edx
lea ebx, [ebx + eax*2]
mov eax, dword [edi*8 + 0x547e60]
add eax, 2
add eax, edx
cmp dword [ebp + 0x14], eax
jae 0x4bde9e
mov byte [esp + 0x14], 1
jmp 0x4bdec4
mov eax, 0x20
mov word [ebx], ax
lea eax, [ebx + 2]
push dword [edi*8 + 0x547e60]
push dword [edi*8 + 0x547e64]
push eax
call fcn.004dd620
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov ecx, dword [edi*8 + 0x547e60]
lea eax, [ecx + 2]
shr eax, 1
lea ebx, [ebx + eax*2]
lea eax, [ecx + 2]
mov dword [esp + 0x20], ebx
add eax, edx
mov dword [esp + 0x10], eax
jmp 0x4bdeea
fstp st(1)
fstp st(0)
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x3c]
mov ecx, eax
sub ecx, dword [esp + 0x48]
mov edx, dword [edi]
test edx, 0xc0000000
je 0x4bdf9d
movzx esi, word [edi + 6]
add esi, esi
cmp ecx, esi
jae 0x4bdf9d
sub esi, ecx
cmp byte [esp + 0x14], 0
jne 0x4bdf88
add eax, esi
cmp dword [ebp + 0x14], eax
jae 0x4bdf27
mov byte [esp + 0x14], 1
jmp 0x4bdf88
test dl, dl
jns 0x4bdf31
movzx eax, word [edi + 8]
jmp 0x4bdf36
mov eax, 0x20
mov edi, esi
mov dword [esp + 0x24], eax
shr edi, 1
test edx, edx
jns 0x4bdf4c
test edi, edi
je 0x4bdf88
mov ecx, edi
mov edi, ebx
jmp 0x4bdf75
mov eax, ecx
mov edx, ebx
and eax, 0xfffffffe
sub edx, eax
push ecx
push edx
mov dword [esp + 0x50], edx
lea eax, [edx + edi*2]
push eax
call fcn.004ddca0
add esp, 0xc
test edi, edi
je 0x4bdf88
mov eax, dword [esp + 0x24]
mov ecx, edi
mov edi, dword [esp + 0x48]
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
shr ecx, 1
rep stosd dword es:[edi], eax
adc ecx, ecx
rep stosw word es:[edi], ax
mov eax, esi
shr eax, 1
lea ebx, [ebx + eax*2]
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], eax
mov edi, dword [ebp + 0xc]
fld qword [0x538050]
fld qword [0x537fe0]
test edi, edi
jne 0x4bd1e1
mov esi, dword [ebp + 0x14]
fstp st(1)
fstp st(0)
mov edx, dword [esp + 0x14]
test dl, dl
jne 0x4bdfcc
add eax, 2
cmp esi, eax
jae 0x4bdffa
mov dl, 1
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4bdfdc
test esi, esi
je 0x4bdfdc
xor ecx, ecx
mov word [eax], cx
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x4bdfec
mov eax, dword [esp + 0x10]
add eax, 2
mov dword [ecx], eax
pop edi
test dl, dl
pop esi
sete al
pop ebx
mov esp, ebp
pop ebp
ret 0x14
xor eax, eax
mov word [ebx], ax
jmp 0x4bdfdc