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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x43c
mov eax, dword [0x44d02c]
mov dword [esp + 0x3c], 0x219727f3
mov dword [esp + 0x40], 0x3d9923aa
mov dword [esp + 0x44], 0x398a3f88
mov dword [esp + 0x48], 0x35cb3b9b
mov dword [esp + 0x4c], 0x31c037fb
mov dword [esp + 0x50], 0xdd233c0
mov dword [esp + 0x54], 0x9a70ff4
mov dword [esp + 0x58], 0x5bc0bb3
mov dword [esp + 0x5c], 0x1b707b8
mov dword [esp + 0x60], 0x1d8f0389
mov dword [esp + 0x64], 0x19c81ffc
mov dword [esp + 0x68], 0x15fa1bb4
mov dword [esp + 0x6c], 0x11e617e7
mov dword [esp + 0x70], 0xede213e6
mov dword [esp + 0x74], 0xe90eef29
mov dword [esp + 0x78], 0xe551eb41
mov dword [esp + 0x7c], 0xe128e752
mov dword [esp + 0x80], 0xfd27e32c
mov dword [esp + 0x84], 0xf976ff1c
mov dword [esp + 0x88], 0xf536fb36
mov dword [esp + 0x8c], 0xf116f70f
mov dword [esp + 0x90], 0xcd42f333
mov dword [esp + 0x94], 0xc97acf7c
mov dword [esp + 0x98], 0xc563cb77
mov dword [esp + 0x9c], 0xc164c77b
mov dword [esp + 0xa0], 0xdd79c315
mov dword [esp + 0xa4], 0xd92fdf50
mov dword [esp + 0xa8], 0xd517db17
mov dword [esp + 0xac], 0xd120d71d
mov dword [esp + 0xb0], 0xad1cd31d
mov dword [esp + 0xb4], 0xa956af4c
mov dword [esp + 0xb8], 0xa572ab7d
mov dword [esp + 0xbc], 0xa171a708
mov dword [esp + 0xc0], 0xbd56a374
mov dword [esp + 0xc4], 0xb90abf5c
mov dword [esp + 0xc8], 0xb50fbb03
mov dword [esp + 0xcc], 0xb156b70b
mov dword [esp + 0xd0], 0x8d0db369
mov dword [esp + 0xd4], 0x893b8f31
mov dword [esp + 0xd8], 0x85718b39
mov dword [esp + 0xdc], 0x815b8764
mov dword [esp + 0xe0], 0x9d308338
mov dword [esp + 0xe4], 0x99299f2d
mov dword [esp + 0xe8], 0x956b9b27
mov dword [esp + 0xec], 0x91659767
mov dword [esp + 0xf0], 0x6d64935b
mov dword [esp + 0xf4], 0x69986f9c
mov dword [esp + 0xf8], 0x659c6b98
mov dword [esp + 0xfc], 0x61866794
mov dword [esp + 0x100], 0x7dc163cd
mov dword [esp + 0x104], 0x79dd7fc2
mov dword [esp + 0x108], 0x75c17bca
mov dword [esp + 0x10c], 0x71b97785
mov dword [esp + 0x110], 0x4dbb73bd
mov dword [esp + 0x114], 0x49834fba
mov dword [esp + 0x118], 0x454a4b86
mov dword [esp + 0x11c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xe3
ja 0x40f9ae
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x3c]
mov esi, ecx
xor esi, 0x67b25f49
and ecx, 0xe7b25f49
lea ecx, [esi + ecx*2]
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x93
mov edx, dword [esp]
mov byte [esp + edx + 0x3c], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xe4
jb 0x40f970
mov esi, dword [esp + 0x464]
lea ebp, [esp + 0x3c]
push 0
push 0
push 0
push 0
push ebp
call eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x447f48]
xor edi, edi
xor eax, eax
test esi, esi
setne al
xor ebp, ebp
mov ebx, dword [esp + 0x468]
jmp dword [eax*4 + 0x447fb8]
mov dword [esi], edi
xor eax, eax
test ebx, ebx
setne al
jmp dword [eax*4 + 0x447fd8]
mov ebx, eax
mov eax, dword [0x44d030]
mov dword [esp + 0x3c], 0xf0e0847
mov byte [esp + 0x40], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 4
ja 0x40fa5b
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x3c]
mov edi, ecx
xor edi, 0x24d891c2
and ecx, 0x24d891c2
lea ecx, [edi + ecx*2]
xor ecx, edx
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
add cl, 0x36
mov edx, dword [esp]
mov byte [esp + edx + 0x3c], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 5
jb 0x40fa20
mov ecx, dword [esp + 0x450]
mov esi, ebx
movzx edx, word [esp + 0x3c]
push 0
push edx
push ecx
push ebx
call eax
xor ecx, ecx
mov dword [esp + 8], eax
test eax, eax
setne cl
mov ebx, dword [esp + 0x468]
jmp dword [ecx*4 + 0x447f50]
xor ebp, ebp
xor edi, edi
jmp 0x40fe63
mov eax, dword [0x44d034]
mov dword [esp + 0xc], 0xe166e7e4
mov word [esp + 0x10], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 5
ja 0x40fb18
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0xc]
mov ebx, ecx
not ebx
or ebx, 0x2e5886d9
add ebx, ecx
xor ecx, 0xae5886d9
lea edi, [ecx + ebx*2]
lea ecx, [ecx + ebx*2]
add ecx, 2
add edi, edx
add edi, 2
and ecx, edx
mov edx, edi
not edx
and edx, ecx
add edx, ecx
not ecx
and ecx, edi
sub ecx, edx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x3c]
add cl, 0xc3
mov edx, dword [esp]
mov byte [esp + edx + 0xc], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 6
jb 0x40fac0
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x3c], 0x41b747b4
mov dword [esp + 0x40], 0x4dbe43bd
mov word [esp + 0x44], 0x4f4c
mov dword [esp + 0x46], 0
mov byte [esp + 0x4a], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xe
ja 0x40fbaa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0x3c]
mov ebx, edx
xor ebx, 0x79f58911
and edx, 0xf9f58911
lea edx, [ebx + edx*2]
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
mov edi, edx
not edi
and edi, 0x55
and edx, 0xaa
sub edx, edi
mov edi, dword [esp + 4]
mov byte [esp + edi + 0x3c], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xf
jb 0x40fb60
push ecx
push 0
push 0
push 0
push dword [esp + 0x464]
push ebp
push dword [esp + 0x20]
call eax
mov ebx, eax
xor eax, eax
test ebx, ebx
setne al
jmp dword [eax*4 + 0x447f58]
xor ebp, ebp
xor edi, edi
jmp 0x40fe52
movzx eax, byte [0x44d164]
jmp dword [eax*4 + 0x447f60]
mov dword [esp + 0xc], 0x9f6d995f
mov dword [esp + 0x10], 0xa34d9d6f
mov dword [esp + 0x14], 0xa743a149
mov dword [esp + 0x18], 0xab8aa59a
mov dword [esp + 0x1c], 0xaf4da94b
mov dword [esp + 0x20], 0xb358ad4b
mov dword [esp + 0x24], 0xb75bb153
mov dword [esp + 0x28], 0xbb59b54f
mov dword [esp + 0x2c], 0xbf47b95e
mov dword [esp + 0x30], 0x437fbd4c
mov word [esp + 0x34], 0x4140
mov dword [esp + 0x36], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x2d
ja 0x40fca1
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 + 0xc]
mov edx, eax
xor edx, 0x8a2b34da
add eax, eax
and eax, 0x145669b4
mov edi, eax
and edi, edx
xor eax, edx
lea eax, [eax + edi*2]
xor eax, ecx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x3c]
add al, 0xbe
mov ecx, dword [esp]
mov byte [esp + ecx + 0xc], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x2e
jb 0x40fc60
movzx eax, word [esp + 0xc]
test ax, ax
je 0x40fcd2
lea ebp, [esp + 0x3c]
lea ecx, [esp + 0xe]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp], ax
add ebp, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40fcc0
mov word [ebp], 0
movzx eax, word [0x44d166]
test ax, ax
je 0x40fd06
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebp + ecx], ax
movzx eax, word [ecx + 0x44d168]
add ecx, 2
test ax, ax
jne 0x40fcf0
add ebp, ecx
mov word [ebp], 0
lea eax, [esp + 0x3c]
push 0x20000000
push 0xffffffffffffffff
push eax
push ebx
call dword [0x44d040]
xor ebp, ebp
mov ecx, dword [esp + 0x458]
mov eax, ecx
neg eax
mov eax, 0
sbb eax, eax
push 0
mov edx, dword [esp + 0x464]
push edx
push edx
push dword [esp + 0x468]
push eax
push ecx
push ebx
call dword [0x44d044]
xor ecx, ecx
test eax, eax
setne cl
xor edi, edi
jmp dword [ecx*4 + 0x447f68]
push 0
push ebx
call dword [0x44d048]
xor ecx, ecx
test eax, eax
setne cl
xor ebp, ebp
xor edi, edi
jmp dword [ecx*4 + 0x447f70]
jmp dword [0x447f78]
mov dword [esp + 0x3c], 0
xor ebp, ebp
xor edi, edi
jmp dword [0x447f80]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x3c], 0
xor ebp, ebp
xor edi, edi
jmp dword [0x447f80]
mov dword [esp + 0xc], 0
mov ecx, eax
add ecx, ebp
lea edx, [esp + 0xc]
push edx
push dword [esp + 0x40]
push ecx
push ebx
mov edi, eax
call dword [0x44d050]
add ebp, dword [esp + 0xc]
xor eax, eax
jmp dword [eax*4 + 0x447fa8]
lea eax, [esp + 0x3c]
push eax
push ebx
call dword [0x44d04c]
test eax, eax
setne cl
mov eax, dword [esp + 0x3c]
test eax, eax
setne dl
and dl, cl
movzx ecx, dl
jmp dword [ecx*4 + 0x447f88]
add eax, ebp
inc eax
push eax
push edi
call fcn.0043e3a0
add esp, 8
xor ecx, ecx
test eax, eax
sete cl
jmp dword [ecx*4 + 0x447f90]
mov eax, 1
jmp dword [eax*4 + 0x447fa8]
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x447fb0]
mov byte [edi + ebp], 0
push ebx
call dword [0x44d058]
push dword [esp + 8]
call dword [0x44d058]
mov ebx, dword [esp + 0x468]
push esi
call dword [0x44d058]
xor eax, eax
mov esi, dword [esp + 0x464]
test esi, esi
setne al
jmp dword [eax*4 + 0x447fb8]
xor eax, eax
test edi, edi
setne al
jmp dword [eax*4 + 0x447fc0]
jmp dword [0x447fc8]
push edi
call fcn.0043b5c0
add esp, 4
nop
nop
nop
nop
push edi
call fcn.0043b5c0
add esp, 4
jmp dword [0x447fd0]
xor eax, eax
test ebx, ebx
setne al
jmp dword [eax*4 + 0x447fd8]
mov dword [ebx], ebp
mov eax, dword [case.0x40f9cb.36]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
test edi, edi
setne al
add esp, 0x43c
pop esi
pop edi
pop ebx
pop ebp
ret
stc
inc eax
add bl, bh
stc
inc eax
add byte [ecx - 0x6dffbf06], cl
cli
inc eax
add bh, cl
sti
inc eax
add al, bl
sti
inc eax
add byte [edi], bl
std
inc eax
add dh, ah
sti
inc eax
add byte [ebx - 2], cl
inc eax
add byte [esi - 3], bl
inc eax
add byte [ebx - 2], cl
inc eax
add byte [ecx - 3], bh
inc eax
add byte [edi - 3], bh
inc eax
add byte [eax - 0x13ffbf03], ah
std
inc eax
add byte [eax + 0x390040fd], ah
inc byte [eax]
adc bh, dh
inc eax
add al, al
std
inc eax
add byte [0x10040fe], ch
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [0x10040fe], ch
add byte [eax], al
add ah, ch
std
inc eax
add byte [ecx], bh
inc byte [eax]
dec ebx
inc byte [eax]
inc edi
inc byte [eax]
jg 0x447fb8
inc eax
add bl, ch
stc
inc eax
add byte [edi - 0x72ffbf02], ch
inc byte [eax]
mov al, byte [0x930040fe]
inc byte [eax]
scasd eax, dword es:[edi]
inc byte [eax]
mov al, byte [0xd20040fe]
inc byte [eax]
mov ebp, 0xd00040fe
inc byte [eax]
sar dh, 1
inc eax
add al, dl
inc byte [eax]
sar dh, cl
inc eax
add byte [edx - 0x46ffbeff], dh
add dword [ecx], eax
mov ecx, 0x39004101
add al, byte [ecx]
inc eax
add al, byte [ecx]
pop ebp
push es