Function at 0x420140
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, 0xe0
mov esi, esp
mov edi, ecx
mov dword [esi + 0xcc], 0
mov dword [esi + 0xc8], 0
mov dword [esi + 0xc4], 0
mov dword [esi + 0xc0], 0
mov dword [esi + 0xbc], 0
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb4], 2
mov dword [esi + 0xb8], 1
push 0xc904973f
push dword [0x44cea4]
call fcn.00440350
add esp, 8
lea ecx, [esi + 0x28]
lea edx, [esi + 0xb0]
push ecx
push edx
push dword [ebp + 0xc]
push dword [ebp + 8]
call eax
test eax, eax
je 0x4201db
cmp dword [edi], 0xffffffff
jne 0x420285
jmp 0x420625
push 0x39be051d
push dword [0x44cea4]
call fcn.00440350
add esp, 8
mov dword [esi], eax
push 0x847b02a2
push dword [0x44cea4]
call fcn.00440350
add esp, 8
mov dword [esi + 8], eax
push 0x2e775759
push dword [0x44cea4]
call fcn.00440350
add esp, 8
mov dword [esi + 4], eax
mov ebx, dword [esi + 0x28]
jmp 0x420233
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
je 0x420264
push dword [ebx + 0xc]
push dword [ebx + 8]
push dword [ebx + 4]
call dword [esi]
mov dword [edi], eax
cmp eax, 0xffffffff
je 0x420230
push dword [ebx + 0x10]
push dword [ebx + 0x18]
push eax
call dword [esi + 8]
test eax, eax
je 0x420264
push dword [edi]
call dword [esi + 4]
mov dword [edi], 0xffffffff
jmp 0x420230
push 0x18c354a9
push dword [0x44cea4]
call fcn.00440350
add esp, 8
push dword [esi + 0x28]
call eax
cmp dword [edi], 0xffffffff
je 0x420625
mov ecx, dword [ebp + 0x10]
mov eax, 0x8d
nop
nop
nop
cmp byte [ecx + eax - 0x8d], 0
lea eax, [eax + 1]
jne 0x420290
mov edx, dword [ebp + 8]
inc eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x4202a0
mov dword [esi + 0x24], edi
mov edx, dword [ebp + 0xc]
nop
inc eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x4202b0
add eax, 3
and eax, 0xfffffffc
call fcn.004083b0
mov eax, esp
and eax, 0xfffffff0
mov dword [esi], eax
mov esp, eax
mov dword [esi + 0x2c], 0xb0a31d8
mov dword [esi + 0x30], 0x31332e0c
mov dword [esi + 0x34], 0x2fe8ec31
mov dword [esi + 0x38], 0x357e7277
mov word [esi + 0x3c], 0xe9c8
mov dword [esi + 0x3e], 0
mov byte [esi + 0x42], 0
mov eax, 0x2a
mov edi, 0x15
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, edi
and edx, 0x2e
mov ebx, eax
and ebx, 0x51
or ebx, edx
xor bl, byte [esi + eax + 2]
xor bl, 0xae
add bl, 0xae
mov byte [esi + eax + 2], bl
inc eax
dec edi
cmp eax, 0x41
jne 0x420310
mov dword [esi + 0xc], 0x493e202d
mov byte [esi + 0x10], 0x68
mov dword [esi + 0x11], 0
mov dword [esi + 0x14], 0
mov eax, 0xaecdfee7
nop
movzx edx, byte [esi + eax + 0x51320125]
xor edx, eax
mov edi, edx
and edi, 1
xor edx, 1
lea edx, [edx + edi*2]
add dl, 0x7c
mov byte [esi + eax + 0x51320125], dl
inc eax
cmp eax, 0xaecdfef3
jne 0x420350
movzx eax, byte [esi + 0xc]
mov ebx, dword [esi]
test al, al
je 0x42039b
lea edx, [esi + 0xd]
mov ebx, dword [esi]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [edx]
inc edx
test al, al
jne 0x420390
mov byte [ebx], 0
movzx eax, byte [ecx]
test al, al
je 0x4203bd
inc ecx
mov edx, dword [ebp + 0xc]
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4203b0
jmp 0x4203c0
mov edx, dword [ebp + 0xc]
mov byte [ebx], 0
movzx eax, byte [esi + 0x2c]
test al, al
je 0x4203db
lea ecx, [esi + 0x2d]
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4203d0
mov byte [ebx], 0
mov ecx, dword [ebp + 8]
movzx eax, byte [ecx]
test al, al
je 0x4203fb
inc ecx
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4203f0
mov byte [ebx], 0x3a
mov dword [esi + 0x2c], 0x73579b9d
mov dword [esi + 0x30], 0x43477743
mov dword [esi + 0x34], 0x4cba937d
mov dword [esi + 0x38], 0x404d7f79
mov dword [esi + 0x3c], 0x47774a73
mov dword [esi + 0x40], 0x4895afa9
mov dword [esi + 0x44], 0x686f5756
mov dword [esi + 0x48], 0x51515458
mov dword [esi + 0x4c], 0x5377a18a
mov dword [esi + 0x50], 0x63675763
mov dword [esi + 0x54], 0x8840449d
mov dword [esi + 0x58], 0x88639e99
mov dword [esi + 0x5c], 0xac819395
mov dword [esi + 0x60], 0xa393ae97
mov dword [esi + 0x64], 0xa28f9275
mov dword [esi + 0x68], 0x9c964d66
mov dword [esi + 0x6c], 0x7381b3bd
mov dword [esi + 0x70], 0x8eba98b7
mov dword [esi + 0x74], 0x5c5b82ad
mov dword [esi + 0x78], 0xa04b8081
mov dword [esi + 0x7c], 0x415581a0
mov dword [esi + 0x80], 0xa051b4ac
mov dword [esi + 0x84], 0x71774493
mov dword [esi + 0x88], 0x52ada8bf
mov dword [esi + 0x8c], 0xb0a0a4b7
mov dword [esi + 0x90], 0xa29da69b
mov dword [esi + 0x94], 0xdecc24ec
mov dword [esi + 0x98], 0xe0e7eeee
mov dword [esi + 0x9c], 0x22123bee
mov dword [esi + 0xa0], 0xa0c0827
mov word [esi + 0xa4], 0x6912
mov word [esi + 0xaa], 0
mov dword [esi + 0xa6], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x58
xor cl, byte [esi + eax + 0x2c]
add cl, 0x48
mov byte [esi + eax + 0x2c], cl
inc eax
cmp eax, 0x80
jne 0x420510
inc ebx
movzx eax, byte [edx]
test al, al
je 0x42054b
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [edx]
inc edx
test al, al
jne 0x420540
mov byte [ebx], 0
movzx eax, byte [esi + 0x2c]
test al, al
je 0x42056b
lea ecx, [esi + 0x2d]
nop
nop
nop
nop
nop
nop
nop
mov byte [ebx], al
inc ebx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420560
mov byte [ebx], 0
mov edi, dword [esi]
sub ebx, edi
push 0xd0026952
push dword [0x44cea4]
call fcn.00440350
add esp, 8
push 0
push ebx
push edi
mov edi, dword [esi + 0x24]
push dword [edi]
call eax
cmp eax, 0xffffffff
jne 0x4205d7
cmp dword [edi], 0xffffffff
je 0x4205d7
push 0x59ea2086
push dword [0x44cea4]
call fcn.00440350
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44cea4]
call fcn.00440350
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
xor eax, eax
jmp 0x420b14
cmp eax, 0xffffffff
je 0x420625
push 0x400
call fcn.004084d0
add esp, 4
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
add eax, 0x400
mov dword [esi + 0x14], eax
lea eax, [esi + 0xc]
mov ecx, edi
push eax
call fcn.00420b20
mov cl, 1
mov dword [esi + 0x18], ecx
test al, al
je 0x420afc
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 0x10]
mov ecx, edi
sub ecx, ebx
cmp edi, dword [esi + 0x14]
je 0x42062c
mov eax, ebx
jmp 0x420783
xor eax, eax
jmp 0x420b14
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
mov dword [esi], ecx
add edx, ecx
cmp edx, eax
ja 0x42063d
mov edx, eax
mov dword [esi + 8], edx
push edx
call fcn.004084d0
add esp, 4
test ebx, ebx
je 0x420770
mov ecx, ebx
xor ecx, edi
mov edx, ebx
not edx
and edx, edi
add edx, edx
mov dword [esi + 0x20], edx
mov dword [esi + 0x1c], ecx
sub edx, ecx
cmp eax, ebx
mov dword [esi + 0x18], eax
jbe 0x42071c
lea ecx, [ebx + edx]
cmp ecx, eax
jbe 0x42071c
test edx, edx
je 0x420762
mov ecx, edx
mov eax, edx
and eax, 0xfffffffe
add eax, eax
xor edx, 1
sub eax, edx
add ebx, eax
add eax, dword [esi + 0x18]
mov dword [esi + 4], ecx
mov edx, ecx
and edx, 7
je 0x4206b7
neg edx
xor edi, edi
movzx ecx, byte [ebx + edi]
mov byte [eax + edi], cl
dec edi
cmp edx, edi
jne 0x4206a4
add ebx, edi
add eax, edi
add dword [esi + 4], edi
mov ecx, dword [esi + 0x1c]
sub ecx, dword [esi + 0x20]
cmp ecx, 0xfffffff8
mov edi, dword [esi + 4]
ja 0x420762
neg edi
xor ecx, ecx
movzx edx, byte [ebx + ecx]
mov byte [eax + ecx], dl
movzx edx, byte [ebx + ecx - 1]
mov byte [eax + ecx - 1], dl
movzx edx, byte [ebx + ecx - 2]
mov byte [eax + ecx - 2], dl
movzx edx, byte [ebx + ecx - 3]
mov byte [eax + ecx - 3], dl
movzx edx, byte [ebx + ecx - 4]
mov byte [eax + ecx - 4], dl
movzx edx, byte [ebx + ecx - 5]
mov byte [eax + ecx - 5], dl
movzx edx, byte [ebx + ecx - 6]
mov byte [eax + ecx - 6], dl
movzx edx, byte [ebx + ecx - 7]
mov byte [eax + ecx - 7], dl
add ecx, 0xfffffff8
cmp edi, ecx
jne 0x4206cd
jmp 0x420762
mov ecx, edx
shr ecx, 2
mov dword [esi + 4], edx
mov edx, ebx
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, dword [esi + 4]
mov edx, ecx
and edx, 0xfffffffc
add eax, edx
add edx, ebx
mov ebx, eax
shr ecx, 1
and ecx, 1
mov eax, edx
mov dword [esi + 0x1c], ebx
mov edi, ebx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esi + 4]
test cl, 1
je 0x420762
and ecx, 2
movzx eax, byte [edx + ecx]
mov edx, dword [esi + 0x1c]
mov byte [edx + ecx], al
push dword [esi + 0xc]
call fcn.004084e0
add esp, 4
mov eax, dword [esi + 0x18]
mov dword [esi + 0xc], eax
mov ecx, dword [esi]
lea edx, [eax + ecx]
mov dword [esi + 0x10], edx
mov edx, dword [esi + 8]
add edx, eax
mov dword [esi + 0x14], edx
mov byte [eax + ecx], 0
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 4], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x2c], 0xc9cecffc
mov dword [esi + 0x30], 0xeaece8e9
mov dword [esi + 0x34], 0xe6e2e49c
mov byte [esi + 0x38], 0xb0
mov dword [esi + 0x39], 0
mov dword [esi + 0x3c], 0
xor edx, edx
xor ecx, ecx
nop
mov edi, ecx
xor edi, 0xc918f861
mov eax, edx
and eax, 0x3c
sub eax, edi
movzx edi, byte [esi + ecx + 0x2c]
xor eax, edi
mov edi, 0x3f
sub edi, eax
and edi, 0xdb
and eax, 0x24
sub eax, edi
mov byte [esi + ecx + 0x2c], al
inc ecx
add edx, 2
cmp ecx, 0x14
jne 0x4207c0
mov ah, byte [esi + 0x2c]
mov dword [esi + 8], ebx
mov dword [esi], ebx
test ah, ah
mov ecx, dword [esi + 0x24]
je 0x42083b
lea ebx, [esi + 0x2c]
mov edi, dword [esi + 8]
mov edx, edi
mov dword [esi], edi
jmp 0x420819
mov ah, byte [ebx]
test ah, ah
mov ecx, dword [esi + 0x24]
je 0x42083b
mov al, byte [edx]
test al, al
je 0x420aeb
inc edx
inc ebx
mov ecx, dword [esi]
lea edi, [ecx + 1]
cmp al, ah
je 0x420834
mov eax, edi
mov dword [esi], edi
mov edx, edi
je 0x420810
lea ebx, [esi + 0x2c]
jmp 0x420810
cmp dword [esi], 0
je 0x420aeb
mov edi, dword [esi + 8]
jmp 0x42085b
cmp cl, dl
mov ecx, dword [esi + 0x24]
je 0x420afc
mov eax, dword [esi + 4]
mov edx, eax
sub edx, edi
je 0x42088f
jae 0x42086a
test edx, edx
jg 0x42088a
lea eax, [edi + edx]
mov dword [esi + 8], edi
mov ebx, eax
xor ecx, ecx
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
xor ecx, ecx
mov edi, dword [esi + 8]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esi + 0x24]
mov eax, dword [esi + 0x10]
sub eax, edx
mov dword [esi + 0x10], eax
lea eax, [esi + 0xc]
push eax
call fcn.00420b20
test al, al
je 0x420af5
mov dword [esi + 0x18], eax
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 0x10]
mov ecx, edi
sub ecx, ebx
cmp edi, dword [esi + 0x14]
je 0x4208c0
mov eax, ebx
jmp 0x420a26
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
mov dword [esi], ecx
add edx, ecx
cmp edx, eax
ja 0x4208d1
mov edx, eax
mov dword [esi + 8], edx
push edx
call fcn.004084d0
add esp, 4
test ebx, ebx
je 0x420a13
mov ecx, ebx
xor ecx, edi
mov edx, ebx
not edx
and edx, edi
add edx, edx
mov dword [esi + 0xac], edx
mov dword [esi + 0x20], ecx
sub edx, ecx
cmp eax, ebx
mov dword [esi + 0x1c], eax
jbe 0x4209bf
lea ecx, [ebx + edx]
cmp ecx, eax
jbe 0x4209bf
test edx, edx
je 0x420a05
mov ecx, edx
mov eax, edx
and eax, 0xfffffffe
add eax, eax
xor edx, 1
sub eax, edx
add ebx, eax
add eax, dword [esi + 0x1c]
mov dword [esi + 4], ecx
mov edx, ecx
and edx, 7
je 0x420953
neg edx
xor edi, edi
nop
nop
nop
nop
nop
movzx ecx, byte [ebx + edi]
mov byte [eax + edi], cl
dec edi
cmp edx, edi
jne 0x420940
add ebx, edi
add eax, edi
add dword [esi + 4], edi
mov ecx, dword [esi + 0x20]
sub ecx, dword [esi + 0xac]
cmp ecx, 0xfffffff8
mov edi, dword [esi + 4]
ja 0x420a05
neg edi
xor ecx, ecx
nop
nop
nop
nop
movzx edx, byte [ebx + ecx]
mov byte [eax + ecx], dl
movzx edx, byte [ebx + ecx - 1]
mov byte [eax + ecx - 1], dl
movzx edx, byte [ebx + ecx - 2]
mov byte [eax + ecx - 2], dl
movzx edx, byte [ebx + ecx - 3]
mov byte [eax + ecx - 3], dl
movzx edx, byte [ebx + ecx - 4]
mov byte [eax + ecx - 4], dl
movzx edx, byte [ebx + ecx - 5]
mov byte [eax + ecx - 5], dl
movzx edx, byte [ebx + ecx - 6]
mov byte [eax + ecx - 6], dl
movzx edx, byte [ebx + ecx - 7]
mov byte [eax + ecx - 7], dl
add ecx, 0xfffffff8
cmp edi, ecx
jne 0x420970
jmp 0x420a05
mov ecx, edx
shr ecx, 2
mov dword [esi + 4], edx
mov edx, ebx
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, dword [esi + 4]
mov edx, ecx
and edx, 0xfffffffc
add eax, edx
add edx, ebx
mov ebx, eax
shr ecx, 1
and ecx, 1
mov eax, edx
mov dword [esi + 0x20], ebx
mov edi, ebx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esi + 4]
test cl, 1
je 0x420a05
and ecx, 2
movzx eax, byte [edx + ecx]
mov edx, dword [esi + 0x20]
mov byte [edx + ecx], al
push dword [esi + 0xc]
call fcn.004084e0
add esp, 4
mov eax, dword [esi + 0x1c]
mov dword [esi + 0xc], eax
mov ecx, dword [esi]
lea edx, [eax + ecx]
mov dword [esi + 0x10], edx
mov edx, dword [esi + 8]
add edx, eax
mov dword [esi + 0x14], edx
mov byte [eax + ecx], 0
mov eax, dword [esi + 0xc]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x10]
inc eax
mov dword [esi + 4], eax
mov dword [esi + 0x10], eax
mov word [esi + 0x2c], 0xdfdd
mov byte [esi + 0x2e], 0xd6
lea eax, [esi + 0x2f]
mov byte [eax + 2], 0
mov word [eax], 0
mov dword [esi], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
shr eax, 2
mov ecx, edx
not ecx
mov ebx, edx
and ebx, 0x7ffffffc
or ebx, 2
mov edi, edx
shr edi, 1
and edi, 1
imul edi, ebx
movzx ebx, byte [esi + edx + 0x2c]
and ecx, 2
imul ecx, eax
mov eax, dword [esi]
or eax, 0x6a7ee5b2
shl ecx, 2
sub ecx, eax
lea eax, [edx + edi*2]
add eax, ecx
mov edi, ebx
xor edi, 0xdb
mov ecx, eax
xor ecx, 0xdb
or ecx, edi
xor ebx, 0x24
xor eax, 0x24
or eax, ebx
and eax, ecx
add al, 0x7a
mov byte [esi + edx + 0x2c], al
inc edx
add dword [esi], 2
cmp edx, 6
jne 0x420a60
xor eax, eax
mov edi, dword [esi + 8]
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edi + eax]
movzx edx, byte [esi + eax + 0x2c]
test cl, cl
je 0x420850
inc eax
cmp cl, dl
je 0x420ad0
jmp 0x420850
push 0x3ea
call fcn.0041fe10
mov dword [esi + 0x18], 0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x420b11
cmp eax, dword [esi + 0x10]
je 0x420b11
push eax
call fcn.004084e0
add esp, 4
mov eax, dword [esi + 0x18]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc