Function at 0x407c90
Capabilities:
Contain obfuscated stackstrings

Disassembly:
sub esp, 0x2c
mov eax, dword [esp + 0x34]
push ebx
mov ebx, dword [esp + 0x34]
push ebp
push esi
push edi
push 0x40000
mov ebp, ebx
push 0x40
mov dword [esp + 0x18], eax
add ebx, 4
xor esi, esi
xor edi, edi
mov byte [esp + 0x24], 0
mov byte [esp + 0x25], 8
mov byte [esp + 0x26], 0x10
mov byte [esp + 0x27], 0x18
mov byte [esp + 0x28], 0x20
mov byte [esp + 0x29], 0x28
mov byte [esp + 0x2a], 0x30
mov byte [esp + 0x2b], 0x38
mov byte [esp + 0x2c], 0x40
mov byte [esp + 0x2d], 0x48
mov byte [esp + 0x2e], 0x50
mov byte [esp + 0x2f], 0x58
mov byte [esp + 0x30], 0x60
mov byte [esp + 0x31], 0x68
mov byte [esp + 0x32], 0x70
mov byte [esp + 0x33], 0x78
mov byte [esp + 0x34], 0x80
mov byte [esp + 0x35], 0x88
mov byte [esp + 0x36], 0x90
mov byte [esp + 0x37], 0x98
mov byte [esp + 0x38], 0xa0
mov byte [esp + 0x39], 0xa8
mov byte [esp + 0x3a], 0xb0
mov byte [esp + 0x3b], 0xb8
mov byte [esp + 0x3c], 0xc0
mov byte [esp + 0x3d], 0xc8
mov byte [esp + 0x3e], 0xd0
mov byte [esp + 0x3f], 0xd8
mov byte [esp + 0x40], 0xe0
mov byte [esp + 0x41], 0xe8
mov byte [esp + 0x42], 0xf0
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x48]
test ecx, ecx
mov dword [esp + 0x18], eax
je 0x407f93
cmp dword [esp + 0x48], 2
jbe 0x407d81
mov ecx, dword [esp + 0x10]
xor edx, edx
mov dx, word [ecx]
mov ecx, dword [eax + edx*4]
jmp 0x407d83
xor ecx, ecx
mov eax, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0x400
mov dword [esp + 0x14], eax
mov ecx, 2
ja 0x407dc8
jmp 0x407d9f
mov eax, dword [esp + 0x14]
cmp ecx, dword [esp + 0x48]
jae 0x407dbf
mov edx, ecx
sub edx, eax
mov eax, dword [esp + 0x10]
mov dl, byte [edx + eax]
cmp dl, byte [ecx + eax]
jne 0x407dbb
inc ecx
cmp ecx, 0x3f
jb 0x407d9b
mov eax, dword [esp + 0x14]
cmp ecx, 3
jae 0x407f0e
mov eax, dword [esp + 0x10]
mov al, byte [eax]
xor edx, edx
cmp al, byte [esp + edx + 0x1c]
je 0x407ddc
inc edx
cmp edx, 0x1f
jb 0x407dd0
cmp edx, 0x1f
je 0x407ebf
shl edi, 1
inc esi
cmp esi, 0x20
jb 0x407df9
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
shl edi, 1
inc esi
cmp esi, 0x20
jb 0x407e0d
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
mov ecx, edx
shr ecx, 4
and ecx, 1
lea eax, [edi + edi]
or ecx, eax
inc esi
cmp esi, 0x20
jb 0x407e2c
mov dword [ebp], ecx
xor esi, esi
xor ecx, ecx
mov ebp, ebx
add ebx, 4
mov eax, edx
shr eax, 3
and eax, 1
add ecx, ecx
or eax, ecx
inc esi
cmp esi, 0x20
jb 0x407e4a
mov dword [ebp], eax
xor esi, esi
xor eax, eax
mov ebp, ebx
add ebx, 4
mov ecx, edx
shr ecx, 2
and ecx, 1
add eax, eax
or ecx, eax
inc esi
cmp esi, 0x20
jb 0x407e68
mov dword [ebp], ecx
xor esi, esi
xor ecx, ecx
mov ebp, ebx
add ebx, 4
mov eax, edx
shr eax, 1
and eax, 1
add ecx, ecx
or eax, ecx
inc esi
cmp esi, 0x20
jb 0x407e85
mov dword [ebp], eax
xor esi, esi
xor eax, eax
mov ebp, ebx
add ebx, 4
mov edi, edx
and edi, 1
add eax, eax
or edi, eax
inc esi
cmp esi, 0x20
jb 0x407ea0
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
push edx
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x25]
push edx
call sub.MSVCRT.dll_memmove
mov eax, dword [esp + 0x1c]
mov cl, byte [eax]
add esp, 0xc
mov byte [esp + 0x1c], cl
jmp 0x407efb
add edi, edi
or edi, 1
inc esi
cmp esi, 0x20
jb 0x407ed6
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
push 0x1e
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x25]
push eax
call sub.MSVCRT.dll_memmove
mov eax, dword [esp + 0x1c]
mov cl, byte [eax]
mov byte [esp + 0x28], cl
mov dl, byte [eax]
not dl
add esp, 0xc
mov byte [ebx], dl
inc ebx
mov ecx, dword [esp + 0x44]
inc eax
mov dword [esp + 0x10], eax
dec dword [esp + 0x48]
mov eax, dword [esp + 0x18]
jmp 0x407f5d
shl edi, 1
inc esi
cmp esi, 0x20
jb 0x407f22
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
add edi, edi
or edi, 1
inc esi
cmp esi, 0x20
jb 0x407f39
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
sub dword [esp + 0x48], ecx
mov edx, dword [esp + 0x10]
not eax
add edx, ecx
inc eax
shl eax, 6
or eax, ecx
mov ecx, dword [esp + 0x44]
mov word [ebx], ax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x10], edx
add ebx, 2
mov edx, dword [esp + 0x10]
sub edx, ecx
cmp edx, 1
jle 0x407f87
mov dword [esp + 0x44], edx
xor edx, edx
mov dx, word [ecx]
mov dword [eax + edx*4], ecx
mov edx, dword [esp + 0x44]
inc ecx
dec edx
cmp edx, 1
mov dword [esp + 0x44], edx
jg 0x407f6c
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x48]
test ecx, ecx
jne 0x407d6c
shl edi, 1
inc esi
cmp esi, 0x20
jb 0x407fa7
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
add edi, edi
or edi, 1
inc esi
cmp esi, 0x20
jb 0x407fbe
mov dword [ebp], edi
xor esi, esi
xor edi, edi
mov ebp, ebx
add ebx, 4
mov word [ebx], 0xff80
push eax
add ebx, 2
call dword [sym.imp.KERNEL32.dll_GlobalFree]
test esi, esi
je 0x407fe4
shl edi, 1
inc esi
cmp esi, 0x20
jae 0x407fdf
test esi, esi
je 0x407fe4
jmp 0x407fd1
mov dword [ebp], edi
mov ebp, ebx
mov ecx, dword [esp + 0x40]
pop edi
pop esi
mov eax, ebp
pop ebp
sub eax, ecx
pop ebx
add esp, 0x2c
ret