Function at 0x421700
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 ebx, dword [ebp + 0xc]
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 [0x44bccc]
call fcn.0043fb60
add esp, 8
lea ecx, [esi + 0x28]
lea edx, [esi + 0xb0]
push ecx
push edx
push ebx
push dword [ebp + 8]
call eax
test eax, eax
je 0x42179c
cmp dword [edi], 0xffffffff
jne 0x421848
jmp 0x421d3c
push 0x39be051d
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
mov dword [esi], eax
push 0x847b02a2
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
mov dword [esi + 4], eax
push 0x2e775759
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
mov dword [esi + 8], eax
mov ebx, dword [esi + 0x28]
jmp 0x4217f3
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
je 0x421824
push dword [ebx + 0xc]
push dword [ebx + 8]
push dword [ebx + 4]
call dword [esi]
mov dword [edi], eax
cmp eax, 0xffffffff
je 0x4217f0
push dword [ebx + 0x10]
push dword [ebx + 0x18]
push eax
call dword [esi + 4]
test eax, eax
je 0x421824
push dword [edi]
call dword [esi + 8]
mov dword [edi], 0xffffffff
jmp 0x4217f0
push 0x18c354a9
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
push dword [esi + 0x28]
call eax
mov ebx, dword [ebp + 0xc]
cmp dword [edi], 0xffffffff
je 0x421d3c
mov ecx, dword [ebp + 0x10]
mov eax, 0x8d
cmp byte [ecx + eax - 0x8d], 0
lea eax, [eax + 1]
jne 0x421850
mov edx, dword [ebp + 8]
inc eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x421860
mov dword [esi + 0x1c], edi
mov edx, ebx
nop
nop
inc eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x421870
add eax, 3
and eax, 0xfffffffc
call fcn.00408a30
mov eax, esp
and eax, 0xfffffff0
mov dword [esi], eax
mov esp, eax
mov dword [esi + 0x30], 0xcdcadf84
mov dword [esi + 0x34], 0x8bb1b2d0
mov dword [esi + 0x38], 0xe1a4a88f
mov dword [esi + 0x3c], 0x9fd6d6c9
mov word [esi + 0x40], 0x57b4
mov dword [esi + 0x42], 0
mov eax, 0xe0ecd719
mov edx, 0xe6
movzx ebx, byte [esi + eax + 0x1f132917]
mov edi, ebx
not edi
mov ecx, eax
and ecx, edi
or edi, edx
add ebx, edi
inc ebx
or ebx, ecx
mov ecx, ebx
and ecx, 2
mov edi, ebx
xor edi, 0x82
lea ecx, [edi + ecx*2]
and ebx, 1
or ecx, 1
add ecx, ebx
mov byte [esi + eax + 0x1f132917], cl
inc eax
dec edx
cmp eax, 0xe0ecd72f
jne 0x4218c0
mov dword [esi + 0xc], 0xf73a2423
mov byte [esi + 0x10], 0x94
mov dword [esi + 0x11], 0
mov byte [esi + 0x15], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
xor ecx, 0xfffffffe
mov edx, eax
or edx, 1
and edx, ecx
mov ebx, edx
and ebx, 0xd
mov edi, edx
and edi, 2
or edx, 2
imul edx, edi
xor edi, 2
imul edi, ebx
mov ecx, eax
add cl, 0xa6
xor cl, byte [esi + eax + 0xc]
add cl, 0xc2
mov byte [esi + eax + 0xc], cl
xor eax, 1
add eax, edx
add eax, edi
cmp eax, 0xa
jb 0x421920
movzx eax, byte [esi + 0xc]
mov edi, dword [esi]
test al, al
je 0x42197b
lea edx, [esi + 0xd]
mov edi, dword [esi]
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x421970
mov byte [edi], 0
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx]
test al, al
je 0x42199d
inc ecx
mov edx, dword [ebp + 8]
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421990
jmp 0x4219a0
mov edx, dword [ebp + 8]
mov byte [edi], 0
movzx eax, byte [esi + 0x30]
test al, al
je 0x4219bb
lea ecx, [esi + 0x31]
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4219b0
mov byte [edi], 0
movzx eax, byte [edx]
test al, al
je 0x4219db
inc edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [edx]
inc edx
test al, al
jne 0x4219d0
mov dword [esi + 4], edi
mov byte [edi], 0x3a
mov dword [esi + 0x30], 0x32f9b65
mov dword [esi + 0x34], 0x333f0f33
mov dword [esi + 0x38], 0x47a4335
mov dword [esi + 0x3c], 0x10152729
mov dword [esi + 0x40], 0x1f2f2a23
mov dword [esi + 0x44], 0x184d8779
mov dword [esi + 0x48], 0x28271f1e
mov dword [esi + 0x4c], 0xe1e1dce8
mov dword [esi + 0x50], 0xe3cf91aa
mov dword [esi + 0x54], 0xd3dfefd3
mov dword [esi + 0x58], 0xc8708cd5
mov dword [esi + 0x5c], 0xd8b3c6c9
mov dword [esi + 0x60], 0xf4d1c3cd
mov dword [esi + 0x64], 0xf3c3c6cf
mov dword [esi + 0x68], 0xf2c7a2bd
mov dword [esi + 0x6c], 0xe49eb58e
mov dword [esi + 0x70], 0x83f1c3c5
mov dword [esi + 0x74], 0xe6cae8cf
mov dword [esi + 0x78], 0x949bf2e5
mov dword [esi + 0x7c], 0xf09bd0d1
mov dword [esi + 0x80], 0x918dd1f0
mov dword [esi + 0x84], 0xf081ec84
mov dword [esi + 0x88], 0x41bf8ce3
mov dword [esi + 0x8c], 0xe2959887
mov dword [esi + 0x90], 0x80909c8f
mov dword [esi + 0x94], 0x92959eab
mov dword [esi + 0x98], 0x9684eca4
mov dword [esi + 0x9c], 0xb08fb6b6
mov dword [esi + 0xa0], 0xf2c2fbb6
mov dword [esi + 0xa4], 0xda24d8ff
mov word [esi + 0xa8], 0x2922
mov dword [esi + 0xaa], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esi + eax + 0x30]
lea ebx, [eax + 0x62db96e4]
mov ecx, 0x1d24691b
sub ecx, eax
and ecx, 0x1d00212c
mov edx, ebx
and edx, 0x60ca06d3
or edx, ecx
xor edx, edi
xor edx, 0x1f11b12c
lea ecx, [eax + 0xe4]
and ecx, edi
or ecx, edx
and ebx, edi
sub ecx, ebx
mov edx, ecx
and edx, 0x11b60d8b
xor ecx, 0x11b60d8b
lea edx, [ecx + edx*2]
and ecx, 1
mov edi, edx
xor edi, 1
add ecx, edx
add ecx, edi
and edx, 0xfe
sub ecx, edx
mov byte [esi + eax + 0x30], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x7e
jb 0x421af0
mov edx, dword [esi + 4]
inc edx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx]
test al, al
je 0x421b7b
inc ecx
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421b70
mov byte [edx], 0
movzx eax, byte [esi + 0x30]
test al, al
je 0x421b9b
lea ecx, [esi + 0x31]
nop
nop
nop
nop
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x421b90
mov byte [edx], 0
mov edi, edx
mov ebx, dword [esi]
sub edi, ebx
push 0xd0026952
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
push 0
push edi
push ebx
mov edi, dword [esi + 0x1c]
push dword [edi]
call eax
cmp eax, 0xffffffff
jne 0x421c09
cmp dword [edi], 0xffffffff
je 0x421c09
push 0x59ea2086
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44bccc]
call fcn.0043fb60
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
xor ebx, ebx
jmp 0x421d3e
cmp eax, 0xffffffff
je 0x421d3c
push 0x400
call fcn.00408c10
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.004220f0
mov bl, 1
test al, al
je 0x421e9f
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
mov ebx, ecx
sub ebx, eax
cmp ecx, dword [esi + 0x14]
jne 0x421da9
mov dword [esi + 4], ecx
mov dword [esi], eax
lea eax, [ebx + 1]
mov ecx, ebx
shr ecx, 1
mov dword [esi + 0x20], ecx
lea edi, [ecx + ebx]
cmp edi, eax
ja 0x421c6d
mov edi, eax
push edi
call fcn.00408c10
add esp, 4
mov edx, dword [esi]
test edx, edx
je 0x421d9b
mov dword [esi + 0x24], edi
cmp eax, edx
mov dword [esi + 8], ebx
mov ecx, dword [esi + 4]
mov dword [esi + 0x18], eax
jbe 0x421d4a
cmp ecx, eax
jbe 0x421d4a
test ebx, ebx
je 0x421d87
mov edi, edx
mov edx, dword [esi + 8]
mov eax, edx
and eax, 0xfffffffe
mov ecx, edx
not ecx
and ecx, 1
sub eax, ecx
lea ecx, [edi + eax]
add eax, dword [esi + 0x18]
mov edi, edx
and edi, 7
je 0x421cdb
neg edi
xor edx, edx
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x421cc8
add ecx, edx
add eax, edx
add edx, dword [esi + 8]
mov edi, dword [esi]
sub edi, dword [esi + 4]
cmp edi, 0xfffffff8
ja 0x421d87
neg edx
xor edi, edi
movzx ebx, byte [ecx + edi]
mov byte [eax + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [eax + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [eax + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [eax + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [eax + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [eax + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [eax + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [eax + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x421ced
jmp 0x421d87
xor ebx, ebx
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
mov ecx, ebx
shr ecx, 2
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov edx, ebx
and edx, 0xfffffffc
lea edi, [eax + edx]
add edx, dword [esi]
mov ecx, dword [esi + 0x20]
and ecx, 1
mov eax, ebx
mov ebx, edx
mov dword [esi], edi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test al, 1
je 0x421d87
mov ecx, dword [esi + 8]
and ecx, 2
movzx edx, byte [edx + ecx]
mov eax, dword [esi]
mov byte [eax + ecx], dl
push dword [esi + 0xc]
call fcn.00408c20
add esp, 4
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0x24]
mov eax, dword [esi + 0x18]
mov dword [esi + 0xc], eax
lea ecx, [eax + ebx]
mov dword [esi + 0x10], ecx
add edi, eax
mov dword [esi + 0x14], edi
mov byte [eax + ebx], 0
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
inc ecx
mov dword [esi], ecx
mov dword [esi + 0x10], ecx
mov dword [esi + 0x30], 0x514a4b5c
mov dword [esi + 0x34], 0x8eb4b0b1
mov dword [esi + 0x38], 0x8a8e8cbc
mov byte [esi + 0x3c], 0xd8
mov dword [esi + 0x3d], 0
xor ecx, ecx
nop
nop
nop
nop
nop
lea edi, [ecx + ecx]
mov ebx, edi
and ebx, 0x32
mov edx, ecx
xor edx, 0xc8ce7e59
add edx, ebx
mov ebx, edx
and ebx, 0x408654ad
or ebx, 0x1d118202
and edx, 0x88482a52
xor edx, ebx
movzx ebx, byte [esi + ecx + 0x30]
xor edx, ebx
mov ebx, edx
and ebx, 1
and edx, 0xfe
xor edx, 3
add edx, ebx
add dl, 0x42
mov byte [esi + ecx + 0x30], dl
and edi, 2
xor ecx, 1
add ecx, edi
cmp ecx, 0x11
jb 0x421de0
movzx edx, byte [esi + 0x30]
mov ecx, eax
mov dword [esi + 4], eax
test dl, dl
mov edi, dword [esi + 0x1c]
je 0x421e8b
lea ebx, [esi + 0x30]
mov ecx, eax
mov dword [esi + 8], eax
mov eax, dword [esi + 8]
mov dword [esi + 4], eax
jmp 0x421e6a
movzx edx, byte [ebx]
test dl, dl
mov edi, dword [esi + 0x1c]
je 0x421e8b
mov dh, byte [ecx]
test dh, dh
je 0x421e91
inc ecx
inc ebx
mov eax, dword [esi + 4]
lea edi, [eax + 1]
cmp dh, dl
je 0x421e81
mov ecx, edi
mov dword [esi + 4], edi
mov eax, dword [esi + 8]
je 0x421e60
lea ebx, [esi + 0x30]
jmp 0x421e60
cmp dword [esi + 4], 0
jne 0x421ed4
mov ecx, edi
push 0x3ea
call fcn.004210d0
xor ebx, ebx
mov eax, dword [esi + 0xc]
test eax, eax
je 0x421d3e
cmp eax, dword [esi + 0x10]
je 0x421d3e
push eax
call fcn.00408c20
add esp, 4
jmp 0x421d3e
cmp dl, dh
je 0x421e9f
mov edx, eax
mov ebx, dword [esi]
sub edx, ebx
je 0x421eff
mov dword [esi], ebx
mov dword [esi + 4], ebx
mov edi, eax
xor ecx, ecx
mov ebx, dword [esi + 4]
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
xor ecx, ecx
mov edi, eax
mov eax, dword [esi]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov edi, dword [esi + 0x1c]
add dword [esi + 0x10], edx
mov ecx, edi
lea eax, [esi + 0xc]
push eax
call fcn.004220f0
test al, al
je 0x421e9d
mov ebx, eax
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 0x10]
mov ecx, edx
sub ecx, eax
cmp edx, dword [esi + 0x14]
jne 0x422084
mov dword [esi + 0x18], edx
mov dword [esi + 4], eax
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
mov dword [esi], ecx
mov dword [esi + 0x24], edx
add ecx, edx
cmp ecx, eax
ja 0x421f3d
mov ecx, eax
mov dword [esi + 8], ecx
push ecx
call fcn.00408c10
add esp, 4
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x422071
mov dword [esi + 0x2c], ebx
cmp eax, ecx
mov ebx, eax
mov edx, dword [esi]
mov dword [esi + 0x20], eax
jbe 0x42201f
cmp dword [esi + 0x18], ebx
jbe 0x42201f
test edx, edx
je 0x42205d
mov edx, dword [esi]
mov eax, edx
and eax, 0xfffffffe
mov ecx, edx
not ecx
and ecx, 1
sub eax, ecx
mov ecx, dword [esi + 4]
add ecx, eax
add eax, dword [esi + 0x20]
mov edi, edx
and edi, 7
je 0x421fb2
neg edi
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edx]
mov byte [eax + edx], bl
dec edx
cmp edi, edx
jne 0x421fa0
add ecx, edx
add eax, edx
add edx, dword [esi]
mov edi, dword [esi + 4]
sub edi, dword [esi + 0x18]
cmp edi, 0xfffffff8
ja 0x42205d
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [ecx + edi]
mov byte [eax + edi], bl
movzx ebx, byte [ecx + edi - 1]
mov byte [eax + edi - 1], bl
movzx ebx, byte [ecx + edi - 2]
mov byte [eax + edi - 2], bl
movzx ebx, byte [ecx + edi - 3]
mov byte [eax + edi - 3], bl
movzx ebx, byte [ecx + edi - 4]
mov byte [eax + edi - 4], bl
movzx ebx, byte [ecx + edi - 5]
mov byte [eax + edi - 5], bl
movzx ebx, byte [ecx + edi - 6]
mov byte [eax + edi - 6], bl
movzx ebx, byte [ecx + edi - 7]
mov byte [eax + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x421fd0
jmp 0x42205d
mov ecx, edx
shr ecx, 2
mov eax, dword [esi + 4]
mov edi, ebx
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and edx, 0xfffffffc
lea edi, [ebx + edx]
add edx, dword [esi + 4]
mov ecx, dword [esi + 0x24]
and ecx, 1
mov ebx, edx
mov dword [esi + 4], edi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test al, 1
je 0x42205d
mov ecx, dword [esi]
and ecx, 2
movzx edx, byte [edx + ecx]
mov eax, dword [esi + 4]
mov byte [eax + ecx], dl
push dword [esi + 0xc]
call fcn.00408c20
add esp, 4
mov edi, dword [esi + 0x1c]
mov ebx, dword [esi + 0x2c]
mov eax, dword [esi + 0x20]
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 ecx, dword [esi + 0x10]
inc ecx
mov dword [esi], ecx
mov dword [esi + 0x10], ecx
mov dword [esi + 0x30], 0x8e8583
xor ecx, ecx
nop
nop
nop
mov dl, 0x62
sub dl, cl
xor dl, byte [esi + ecx + 0x30]
mov dh, 0xee
sub dh, dl
mov byte [esi + ecx + 0x30], dh
mov edx, ecx
xor edx, 0xfffffffe
or ecx, 1
and edx, ecx
add ecx, edx
cmp ecx, 4
jb 0x4220a0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esi + ecx + 0x30]
test dl, dl
je 0x421ed0
inc ecx
cmp dl, dh
je 0x4220d0
jmp 0x421ed0