Function at 0x409930
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x409981
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x409988
cmp al, 0x64
jb 0x409997
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx edx, cx
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x43e438]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x4099a0
mov bl, 1
jmp 0x40a01f
lea eax, [esp + 0xe]
mov dword [esp + 0x38], eax
mov byte [esp + 0xe], 0x30
jmp 0x4099cc
mov ecx, 3
cmp al, 9
ja 0x4099b7
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 0xb
mov dword [esp + 0x38], edx
mov byte [esp + ecx + 0xb], al
jmp 0x4099cc
movzx eax, word [eax + eax + 0x43e438]
lea ecx, [esp + 0xd]
mov dword [esp + 0x38], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406510
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xe4], eax
lea ebx, [esp + 0xeb]
push ebx
call fcn.00433fe0
add esp, 4
mov eax, edi
and eax, 0x800
mov dword [esp + 0x3c], edi
mov ecx, edi
xor ecx, 0x800
lea eax, [ecx + eax*2]
push eax
call fcn.00435d80
add esp, 4
mov edi, eax
mov dword [esp + 0x40], 0x3f3b083e
mov byte [esp + 0x44], 0x82
mov dword [esp + 0x45], 0
mov dword [esp + 0x49], 0
mov dword [esp + 0x4d], 0
mov word [esp + 0x51], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x12
ja 0x409a85
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
add al, 0x6b
xor al, byte [esp + ecx + 0x40]
add al, 0x13
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x13
jb 0x409a60
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.00409090
mov word [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0xdb464048
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x15
ja 0x409b18
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0xa7505324
add ecx, 0xa7505324
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 4
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x16
jb 0x409ae0
mov ecx, esi
push dword [esp + 0x38]
push ebx
push edi
call fcn.00409090
mov eax, dword [str.swg5EG__3]
mov dword [esp + 0x5b], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0xfb9c625a
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1e
ja 0x409bd3
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
movzx edx, byte [esp + edx + 0x40]
lea ebx, [ecx + edx]
add ebx, 0x81b28b5f
add ecx, 0x81b28b5f
and ecx, edx
add ecx, ecx
mov edx, ecx
xor edx, ebx
not ecx
and ecx, ebx
add ecx, ecx
sub ecx, edx
add cl, 0x67
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
mov ecx, dword [esp + 0x10]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1f
jb 0x409b80
mov ecx, esi
push eax
lea ebx, [esp + 0x44]
push ebx
push edi
call fcn.00409090
mov dword [esp + 0x40], 0xffe6feeb
mov dword [esp + 0x44], 0xe2f3eaf3
mov dword [esp + 0x48], 0xf4f1fae3
mov byte [esp + 0x4c], 0x5a
mov dword [esp + 0x4d], 0
mov word [esp + 0x51], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x12
ja 0x409c62
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x148417b3
add eax, 0xb3
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
add al, 0x1b
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x13
jb 0x409c20
mov dword [esp + 0x27], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0x930c7c75
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x1a
ja 0x409cd5
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
add al, 0x43
xor al, byte [esp + ecx + 0x10]
add al, 0x2b
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1b
jb 0x409cb0
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
push edi
call fcn.00409090
mov dword [esp + 0x44], 0
mov dword [esp + 0x53], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0x2820222c
mov byte [esp + 0x44], 0xb2
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x16
ja 0x409d68
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0x248ca1e9
add ecx, 0x248ca1e9
and ecx, edx
add ecx, ecx
sub eax, ecx
add al, 0xa1
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x17
jb 0x409d30
mov ecx, esi
push dword [esp + 0x3c]
push dword [esp + 0xe8]
push ebx
push edi
call fcn.004093a0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], 0xdb2dd91b
mov dword [esp + 0x44], 0xe71ae512
mov dword [esp + 0x48], 0xe314e10d
mov dword [esp + 0x4c], 0xefdbed10
mov dword [esp + 0x50], 0xeb13e934
mov dword [esp + 0x54], 0xf71bf504
mov dword [esp + 0x58], 0xf3d2f1ca
mov dword [esp + 0x5c], 0xff03fd09
mov dword [esp + 0x60], 0xfb06f90c
mov dword [esp + 0x64], 0x8776856d
mov dword [esp + 0x68], 0x83708161
mov dword [esp + 0x6c], 0x8fb98d70
mov dword [esp + 0x70], 0x8b7d8966
mov dword [esp + 0x74], 0x97639566
mov dword [esp + 0x78], 0x937e91a5
mov dword [esp + 0x7c], 0x9f629d7d
mov dword [esp + 0x80], 0x9ba19979
mov dword [esp + 0x84], 0xa744a584
mov dword [esp + 0x88], 0xa35fa157
mov dword [esp + 0x8c], 0xaf42ad5a
mov dword [esp + 0x90], 0xab58a949
mov dword [esp + 0x94], 0xb773b54d
mov dword [esp + 0x98], 0xb35fb152
mov dword [esp + 0x9c], 0xbf83bd84
mov dword [esp + 0xa0], 0xbb57b954
mov dword [esp + 0xa4], 0x47af4579
mov dword [esp + 0xa8], 0x43ae41b0
mov dword [esp + 0xac], 0x4fad4dbb
mov dword [esp + 0xb0], 0x4ba749a1
mov dword [esp + 0xb4], 0x57a455a6
mov dword [esp + 0xb8], 0x536351bd
mov dword [esp + 0xbc], 0x5f545d49
mov word [esp + 0xc0], 0x5958
mov dword [esp + 0xda], 0
mov dword [esp + 0xd6], 0
mov dword [esp + 0xd2], 0
mov dword [esp + 0xce], 0
mov dword [esp + 0xca], 0
mov dword [esp + 0xc6], 0
mov dword [esp + 0xc2], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x9d
ja 0x409f5d
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ebx, byte [esp + ecx + 0x40]
lea ecx, [edx + ebx]
add ecx, 0x9c
add edx, 0x9c
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0xbc
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x9e
jb 0x409f20
mov dword [esp + 0x10], 0x3e30ddf
mov dword [esp + 0x14], 0x79f0190
mov word [esp + 0x18], 0x504
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov dword [esp + 0x22], 0
mov dword [esp + 0x26], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x19
ja 0x409fe7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov edx, dword [esp + 8]
movzx eax, byte [esp + edx + 0x10]
lea ebx, [ecx + 0x617594d6]
mov edx, eax
not edx
or edx, ebx
and ebx, eax
add ebx, edx
sub ecx, ebx
add cl, 0xfb
mov eax, dword [esp + 8]
mov byte [esp + eax + 0x10], cl
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x1a
jb 0x409fb0
push 0x493e0
push dword [esp + 0x40]
push edi
push 0
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d470
add esp, 0x1c
mov ebx, eax
push edi
call fcn.00408600
add esp, 4
mov eax, dword [esi + 0x60]
add dword [esi + 4], eax
mov dword [esi + 0x60], 0
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret