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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov dword [esp + 0x28], 0x62aabeb9
mov dword [esp + 0x2c], 0xc6c8b4b0
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x60
mov dword [esp + 0x31], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
ja 0x40f0c8
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
mov esi, eax
xor esi, 0x334d1f3a
mov edi, eax
xor edi, 0x4cb2e0c5
or eax, 0x334d1f3a
and eax, edi
lea eax, [esi + eax*2]
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xde
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xd
jb 0x40f080
lea eax, [esp + 0x1c]
lea esi, [esp + 0x28]
mov ebx, esi
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x24]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x24], cl
mov dword [esp + 0x28], 0x49db4bf1
mov dword [esp + 0x2c], 0x45ca47da
mov dword [esp + 0x30], 0x41d043df
mov dword [esp + 0x34], 0xbdedbfcc
mov dword [esp + 0x38], 0xb93dbb10
mov dword [esp + 0x3c], 0xb52db728
mov dword [esp + 0x40], 0xb1d2b3f2
mov dword [esp + 0x44], 0xad3eaf2f
mov dword [esp + 0x48], 0xa93eab3c
mov dword [esp + 0x4c], 0xa53ba73f
mov dword [esp + 0x50], 0xa12ea33b
mov dword [esp + 0x54], 0x9d0f9f37
mov dword [esp + 0x58], 0x99cb9b0e
mov dword [esp + 0x5c], 0x95c59710
mov dword [esp + 0x60], 0x911b931d
mov dword [esp + 0x64], 0x8ddd8f19
mov dword [esp + 0x68], 0x891b8b16
mov dword [esp + 0x6c], 0x85158706
mov dword [esp + 0x70], 0x810983d7
mov dword [esp + 0x74], 0xfd6aff0e
mov dword [esp + 0x78], 0xf968fb67
mov dword [esp + 0x7c], 0xf567f765
mov dword [esp + 0x80], 0xf169f368
mov dword [esp + 0x84], 0xed9def6c
mov dword [esp + 0x88], 0xe9eaeb9a
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x63
ja 0x40f222
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
mov edi, ecx
xor edi, 0xad07b73
and ecx, 0xad07b73
lea ecx, [edi + ecx*2]
lea edi, [ecx + edx]
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0xc]
add cl, 0xc1
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x64
jb 0x40f1e0
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0xc], 0xb7d789db
mov dword [esp + 0x10], 0xb3dbb524
mov dword [esp + 0x14], 0xb1b0
mov byte [esp + 0x18], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xc
ja 0x40f29e
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0xc]
mov ebx, edx
xor ebx, 0x66f0ec9e
and edx, 0xe6f0ec9e
lea edx, [ebx + edx*2]
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0xea
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xd
jb 0x40f260
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040fd80
add esp, 0x1c
test al, al
je 0x40f424
mov word [esp + 0x28], 0xbebb
mov byte [esp + 0x2a], 0xd6
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40f33c
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
mov edx, eax
xor edx, 0x28fb8bce
and eax, 0x28fb8bce
lea eax, [edx + eax*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
mov ecx, eax
not ecx
and ecx, 6
and eax, 0xf9
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40f2f0
xor ecx, ecx
mov edx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx eax, byte [edx + ecx]
movzx ebx, byte [esp + ecx + 0x28]
test eax, eax
je 0x40f362
inc ecx
cmp al, bl
je 0x40f350
not bl
movsx ecx, bl
inc eax
mov dl, 1
mov dword [esp + 8], edx
add eax, ecx
je 0x40f622
mov dword [esp + 0x28], 0xe51710e1
mov dword [esp + 0x2c], 0x65f4f6ef
mov dword [esp + 0x30], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x40f3e6
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
mov edx, eax
xor edx, 0x37256ceb
and eax, 0x37256ceb
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov ecx, eax
xor ecx, 0x97
and eax, 0x68
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x40f3a0
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40f42b
mov edx, esi
mov ecx, eax
jmp 0x40f407
movzx ebx, byte [edx]
test bl, bl
je 0x40f42d
mov bh, byte [eax]
test bh, bh
je 0x40f61a
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40f41e
mov ecx, edi
mov eax, edi
je 0x40f400
mov edx, esi
jmp 0x40f400
xor eax, eax
jmp 0x40f632
mov ecx, eax
test ecx, ecx
je 0x40f61a
mov dword [esp + 0x28], 0x1a13186a
mov dword [esp + 0x2c], 0x7703db21
mov dword [esp + 0x30], 0xc7c00e73
mov dword [esp + 0x34], 0x7e06047e
mov dword [esp + 0x38], 0xefc8340d
mov word [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x15
ja 0x40f4c6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
mov edx, eax
xor edx, 0xf8ff3e2a
and eax, 0xf8ff3e2a
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
mov ecx, eax
xor ecx, 0xd2
and eax, 0x2d
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x16
jb 0x40f480
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40f504
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40f4e7
movzx ecx, byte [edx]
test cl, cl
je 0x40f506
mov ch, byte [eax]
test ch, ch
je 0x40f61a
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40f4fe
mov esi, ebx
mov eax, ebx
je 0x40f4e0
mov edx, edi
jmp 0x40f4e0
mov esi, eax
test esi, esi
je 0x40f61a
mov word [esp + 0x28], 0x59b2
mov byte [esp + 0x2a], 0x9a
mov word [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 4
ja 0x40f56b
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x117682db
add eax, 0x117682db
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
add al, 0xb9
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 5
jb 0x40f530
movzx eax, byte [esp + 0x28]
test al, al
je 0x40f5b0
add esi, 0x13
lea ebp, [esp + 0x28]
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40f597
movzx eax, byte [ecx]
test al, al
je 0x40f5c1
mov ah, byte [edx]
test ah, ah
je 0x40f61a
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40f5aa
mov edi, ebx
mov edx, ebx
je 0x40f590
mov ecx, ebp
jmp 0x40f590
mov byte [0x44d29c], 1
mov eax, 0x44d29e
jmp 0x40f643
test edi, edi
je 0x40f61a
mov byte [0x44d29c], 1
mov dword [esp + 0x28], 0
mov eax, 0x44d29e
cmp esi, edi
jae 0x40f643
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40f63d
push ebp
push edi
push esi
call fcn.00410f60
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x44d29e], dx
cmp ebx, 0x1fb
ja 0x40f612
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40f5e3
lea eax, [ecx + 0x44d29e]
jmp 0x40f643
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043be60
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44d29e]
mov word [eax], 0
jmp 0x40f622