Function at 0x40b9b0
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, 0xfffffff8
sub esp, 0xa8
mov dword [esp + 0x20], 0x2e66aaad
mov dword [esp + 0x24], 0x525c585c
lea eax, [esp + 0x28]
mov dword [esp + 0x14], eax
mov byte [esp + 0x28], 0xf4
mov dword [esp + 0x29], 0
mov dword [esp + 0x2d], 0
mov dword [esp + 0x31], 0
mov byte [esp + 0x35], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x20]
lea ecx, [eax - 0x2a297582]
mov esi, edx
not esi
lea edi, [edx + esi*2]
mov ebx, 0x3ffffffe
sub ebx, edi
or ebx, ecx
lea esi, [ebx + edi]
add edi, ebx
add edi, 2
mov ebx, 0x2a297581
sub ebx, eax
or ebx, edx
sub ecx, edx
add ecx, ebx
or ecx, edi
sub esi, ecx
inc esi
mov dword [esp], esi
mov ecx, dword [esp]
add cl, 0x8e
mov byte [esp + eax + 0x20], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x16
jb 0x40ba00
lea edi, [esp + 0x9b]
lea eax, [esp + 0x20]
mov ecx, 2
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0xa3]
xor ecx, ecx
mov eax, dword [esp + 0x14]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
movzx eax, byte [esp + 0x28]
mov byte [esp + 0xa3], al
mov dword [esp + 0x20], 0xb305b5eb
mov dword [esp + 0x24], 0x8f3cb100
mov dword [esp + 0x28], 0x8b3e8d35
mov dword [esp + 0x2c], 0x87fb8906
mov dword [esp + 0x30], 0x8303852a
mov dword [esp + 0x34], 0x9f3b8132
mov dword [esp + 0x38], 0x9bfc9dd8
mov dword [esp + 0x3c], 0x97289925
mov dword [esp + 0x40], 0x93209526
mov dword [esp + 0x44], 0xef2d9125
mov dword [esp + 0x48], 0xeb60ed51
mov dword [esp + 0x4c], 0xe759e95d
mov dword [esp + 0x50], 0xe395e554
mov dword [esp + 0x54], 0xff93e16a
mov dword [esp + 0x58], 0xfb75fd77
mov dword [esp + 0x5c], 0xf78bf973
mov dword [esp + 0x60], 0xf345f54c
mov dword [esp + 0x64], 0xcf43f17c
mov dword [esp + 0x68], 0xcb47cdbd
mov dword [esp + 0x6c], 0xc77cc944
mov dword [esp + 0x70], 0xc376c57d
mov dword [esp + 0x74], 0xdf71c17f
mov dword [esp + 0x78], 0xdb67dd62
mov dword [esp + 0x7c], 0xd7cbd966
mov dword [esp + 0x80], 0xd3d4d5c0
mov dword [esp + 0x8b], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov ecx, 0x7f9a5399
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x7f9a5379]
lea edx, [eax + eax]
not edx
add edx, eax
mov esi, edx
xor esi, 0x898157e8
or edx, 0x767ea817
and edx, esi
and eax, 0xffffffe8
or eax, edx
xor eax, ecx
xor eax, 0x767ea817
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xd1
mov byte [esp + ecx - 0x7f9a5379], al
inc ecx
cmp ecx, 0x7f9a5408
jne 0x40bb80
mov dword [esp], 0x836381af
mov dword [esp + 4], 0x876f8574
mov word [esp + 8], 0x8988
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
mov eax, 0x653318c6
mov edx, 0xca66318c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x14], edx
movzx esi, byte [esp + eax - 0x653318c6]
mov dword [esp + 0x94], esi
mov edx, dword [esp + 0x14]
and edx, 0x420601b4
mov ecx, eax
xor ecx, 0xbb0b43fa
add ecx, edx
mov ebx, ecx
and ebx, esi
mov edi, ebx
not edi
mov esi, ebx
and esi, 0xfffffffd
mov edx, edi
and edx, 2
imul edx, esi
and edi, 0xfd
xor esi, 0xfffffffd
or esi, edi
and ebx, 2
not esi
imul esi, ebx
add esi, edx
add ecx, dword [esp + 0x94]
mov edx, ecx
not edx
and edx, esi
not esi
and esi, ecx
sub esi, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x1c]
add cl, 0xc0
mov byte [esp + eax - 0x653318c6], cl
inc eax
add edx, 2
cmp eax, 0x653318d6
jne 0x40bc00
lea eax, [esp + 0x18]
mov ecx, esp
push 0
push eax
push 8
lea eax, [esp + 0xa7]
push eax
lea eax, [esp + 0x30]
push eax
push ecx
push dword [ebp + 8]
call fcn.0040c980
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40c189
mov word [esp + 0x20], 0xf0f7
mov byte [esp + 0x22], 0x64
mov dword [esp + 0x23], 0
mov byte [esp + 0x27], 0
mov dword [esp], 0x60420e86
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x20], al
movzx eax, byte [esp + 0x21]
xor eax, 0x60420e72
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x21], al
movzx eax, byte [esp + 0x22]
xor eax, 0x60420e73
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x22], al
movzx eax, byte [esp + 0x23]
xor eax, 0x60420e74
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x23], al
movzx eax, byte [esp + 0x24]
xor eax, 0x60420e75
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x24], al
movzx eax, byte [esp + 0x25]
xor eax, 0x60420e76
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x25], al
movzx eax, byte [esp + 0x26]
xor eax, 0x60420e77
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x26], al
movzx eax, byte [esp + 0x27]
xor eax, 0x60420e78
mov dword [esp], eax
mov eax, dword [esp]
add al, 0xe9
mov byte [esp + 0x27], al
mov eax, dword [esp + 0x18]
nop
nop
movzx ecx, byte [eax + ebx]
movzx edx, byte [esp + ebx + 0x20]
test cl, cl
je 0x40bd92
inc ebx
cmp cl, dl
je 0x40bd80
mov bl, 1
cmp cl, dl
je 0x40c180
mov dword [esp + 0x20], 0xeffdfeeb
mov dword [esp + 0x24], 0x1feaecf9
mov byte [esp + 0x28], 0
mov dword [esp], 0xda174f38
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x20], al
movzx eax, byte [esp + 0x21]
lea ecx, [eax + eax]
and ecx, 0xffffffa8
neg ecx
add eax, ecx
add eax, 0xda174fd4
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x21], al
movzx eax, byte [esp + 0x22]
lea ecx, [eax + eax]
and ecx, 0xffffffaa
neg ecx
add eax, ecx
add eax, 0xda174fd5
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x22], al
movzx eax, byte [esp + 0x23]
mov ecx, eax
and ecx, 0xffffffd4
mov edx, eax
and edx, 2
mov esi, eax
or esi, 0xfffffffd
inc esi
lea edi, [ecx + 2]
imul edi, edx
imul esi, ecx
sub esi, edi
add eax, esi
add eax, 0xda174fd6
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x23], al
movzx eax, byte [esp + 0x24]
mov ecx, eax
and ecx, 0xffffffd5
mov edx, eax
and edx, 2
mov esi, eax
or esi, 0xfffffffd
inc esi
lea edi, [ecx + 2]
imul edi, edx
imul esi, ecx
sub esi, edi
add eax, esi
add eax, 0xda174fd7
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x24], al
movzx eax, byte [esp + 0x25]
lea ecx, [eax + eax]
and ecx, 0xffffffb0
neg ecx
add eax, ecx
add eax, 0xda174fd8
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x25], al
movzx eax, byte [esp + 0x26]
lea ecx, [eax + eax]
and ecx, 0xffffffb2
neg ecx
add eax, ecx
add eax, 0xda174fd9
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x26], al
movzx eax, byte [esp + 0x27]
mov ecx, eax
and ecx, 0xffffffd8
mov edx, eax
and edx, 2
mov esi, eax
or esi, 0xfffffffd
inc esi
lea edi, [ecx + 2]
imul edi, edx
imul esi, ecx
sub esi, edi
add eax, esi
add eax, 0xda174fda
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x27], al
movzx eax, byte [esp + 0x28]
mov ecx, eax
and ecx, 0xffffffd9
mov edx, eax
and edx, 2
mov esi, eax
or esi, 0xfffffffd
inc esi
lea edi, [ecx + 2]
imul edi, edx
imul esi, ecx
sub esi, edi
add eax, esi
add eax, 0xda174fdb
mov dword [esp], eax
mov eax, dword [esp]
add al, 0x3b
mov byte [esp + 0x28], al
mov eax, dword [esp + 0x18]
movzx ebx, byte [esp + 0x20]
mov ecx, eax
test bl, bl
je 0x40bf56
mov edi, eax
lea edx, [esp + 0x20]
mov ecx, eax
jmp 0x40bf37
movzx ebx, byte [edx]
test bl, bl
je 0x40bf56
mov bh, byte [edi]
test bh, bh
je 0x40c044
inc edi
inc edx
lea esi, [ecx + 1]
cmp bh, bl
je 0x40bf4c
mov ecx, esi
je 0x40bf30
lea edx, [esp + 0x20]
mov edi, esi
jmp 0x40bf30
test ecx, ecx
je 0x40c044
mov dword [esp + 0x20], 0x465f4c5e
mov dword [esp + 0x24], 0x5347076d
mov dword [esp + 0x28], 0x1b1c5a57
mov dword [esp + 0x2c], 0x4a4258b2
mov dword [esp + 0x30], 0x33147059
lea edx, [esp + 0x34]
mov dword [esp + 0x34], 0
mov dword [esp + 0x37], 0
mov eax, 0x81137026
nop
movzx edi, byte [esp + eax + 0x7eec8ffa]
mov ecx, edi
not ecx
lea ebx, [edi*2 + 1]
lea ecx, [ecx + edi*2]
inc ecx
mov esi, eax
or esi, edi
sub edi, ebx
and edi, 0x114038
and ecx, 0x81023047
or ecx, edi
xor ecx, 0x114038
and ecx, eax
xor ecx, esi
mov dword [esp], ecx
mov ecx, dword [esp]
add cl, 0xf6
mov byte [esp + eax + 0x7eec8ffa], cl
inc eax
cmp eax, 0x81137041
jne 0x40bfa0
lea esi, [esp + 0x20]
mov eax, esp
mov edi, eax
mov ecx, 5
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x14]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ecx, dword [esp + 0x18]
movzx ebx, byte [esp]
test bl, bl
je 0x40c04b
mov edx, eax
mov esi, ecx
jmp 0x40c027
movzx ebx, byte [edx]
test bl, bl
je 0x40c04d
mov bh, byte [ecx]
test bh, bh
je 0x40c16b
inc ecx
inc edx
lea edi, [esi + 1]
cmp bh, bl
je 0x40c03c
mov esi, edi
je 0x40c020
mov edx, eax
mov ecx, edi
jmp 0x40c020
xor ebx, ebx
jmp 0x40c180
mov esi, ecx
test esi, esi
je 0x40c16b
mov word [esp + 0x20], 0xdfba
mov byte [esp + 0x22], 0x9a
mov dword [esp + 0x23], 0
mov dword [esp + 0x27], 0
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov ecx, 0x317a4994
mov edx, 0xce85b66b
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x317a4974]
mov ebx, edi
not ebx
lea eax, [edi + edi*2]
lea eax, [eax + ebx*4]
add eax, 3
and eax, ecx
or ebx, edx
add edi, ebx
inc edi
or edi, eax
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x1c]
add al, 0xf4
mov byte [esp + ecx - 0x317a4974], al
inc ecx
dec edx
cmp ecx, 0x317a49a4
jne 0x40c090
movzx ebx, byte [esp + 0x20]
test bl, bl
je 0x40c104
add esi, 0x13
mov edx, esi
lea ecx, [esp + 0x20]
mov edi, esi
jmp 0x40c0e9
movzx ebx, byte [ecx]
test bl, bl
mov edi, eax
je 0x40c112
mov bh, byte [edx]
test bh, bh
je 0x40c16b
inc edx
inc ecx
mov eax, edi
inc edi
cmp bh, bl
je 0x40c0fa
mov eax, edi
je 0x40c0e0
lea ecx, [esp + 0x20]
mov edx, edi
jmp 0x40c0e0
mov byte [0x44e93c], 1
mov eax, 0x44e93e
jmp 0x40c175
test edi, edi
je 0x40c16b
mov byte [0x44e93c], 1
mov dword [esp + 0x20], 0
mov eax, 0x44e93e
cmp esi, edi
jae 0x40c175
xor ebx, ebx
cmp byte [esi], 0
je 0x40c16f
lea eax, [esp + 0x20]
push eax
push edi
push esi
call fcn.0040ddb0
add esp, 0xc
movzx edx, word [esp + 0x20]
lea ecx, [ebx + 2]
mov word [ebx + 0x44e93e], dx
cmp ebx, 0x1fb
ja 0x40c163
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40c130
lea eax, [ecx + 0x44e93e]
jmp 0x40c175
xor ebx, ebx
jmp 0x40c17c
lea eax, [ebx + 0x44e93e]
mov word [eax], 0
mov bl, 1
mov eax, dword [esp + 0x18]
push eax
call fcn.0043e740
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret