Function at 0x420900
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 [0x44ba34]
call fcn.0043f9f0
add esp, 8
lea ecx, [esi + 0x2c]
lea edx, [esi + 0xb0]
push ecx
push edx
push ebx
push dword [ebp + 8]
call eax
test eax, eax
je 0x42099c
cmp dword [edi], 0xffffffff
jne 0x420a49
jmp 0x420f37
push 0x39be051d
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
mov dword [esi + 4], eax
push 0x847b02a2
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
mov dword [esi + 8], eax
push 0x2e775759
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
mov dword [esi + 0xc], eax
mov ebx, dword [esi + 0x2c]
jmp 0x4209f3
mov ebx, dword [ebx + 0x1c]
test ebx, ebx
je 0x420a25
push dword [ebx + 0xc]
push dword [ebx + 8]
push dword [ebx + 4]
call dword [esi + 4]
mov dword [edi], eax
cmp eax, 0xffffffff
je 0x4209f0
push dword [ebx + 0x10]
push dword [ebx + 0x18]
push eax
call dword [esi + 8]
test eax, eax
je 0x420a25
push dword [edi]
call dword [esi + 0xc]
mov dword [edi], 0xffffffff
jmp 0x4209f0
push 0x18c354a9
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
push dword [esi + 0x2c]
call eax
mov ebx, dword [ebp + 0xc]
cmp dword [edi], 0xffffffff
je 0x420f37
mov ecx, dword [ebp + 0x10]
mov eax, 0x8d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [ecx + eax - 0x8d], 0
lea eax, [eax + 1]
jne 0x420a60
mov edx, dword [ebp + 8]
inc eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x420a70
mov dword [esi + 0x20], edi
mov edx, ebx
nop
nop
inc eax
cmp byte [edx], 0
lea edx, [edx + 1]
jne 0x420a80
add eax, 3
and eax, 0xfffffffc
call fcn.00408290
mov eax, esp
and eax, 0xfffffff0
mov dword [esi + 4], eax
mov esp, eax
mov dword [esi + 0x30], 0x6f6e5930
mov dword [esi + 0x34], 0x494f4a6c
mov dword [esi + 0x38], 0x53102c49
mov dword [esi + 0x3c], 0x5d9a9693
mov word [esi + 0x40], 0x120
mov dword [esi + 0x42], 0
mov word [esi + 0x46], 0
mov eax, 0x84
mov edx, 0x7b
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esi + eax - 0x54]
mov ebx, edx
xor ebx, eax
and ebx, edi
xor ebx, eax
add bl, 0x6c
mov byte [esi + eax - 0x54], bl
inc eax
dec edx
cmp eax, 0x9c
jne 0x420ae0
mov dword [esi + 0x10], 0xc3362427
mov byte [esi + 0x14], 0xe4
mov word [esi + 0x15], 0
mov byte [esi + 0x17], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esi + eax + 0x10]
mov edx, eax
or edx, 0xe36f9928
xor edx, edi
add edx, 0xe0332728
mov edi, edx
and edi, 0x2820037
xor edx, 0x8ed20237
lea ebx, [edx + edi*2]
mov edi, ebx
not edi
and edi, 0x28
and ebx, 0xd6
sub ebx, edi
and edx, 1
or edx, ebx
inc dl
mov byte [esi + eax + 0x10], dl
mov edx, eax
and edx, 1
xor eax, 1
lea eax, [eax + edx*2]
cmp eax, 8
jb 0x420b20
movzx eax, byte [esi + 0x10]
mov edi, dword [esi + 4]
test al, al
je 0x420b9b
lea edx, [esi + 0x11]
mov edi, dword [esi + 4]
nop
nop
nop
nop
nop
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 0x420b90
mov byte [edi], 0
movzx eax, byte [ecx]
test al, al
je 0x420bbd
inc ecx
mov edx, dword [ebp + 8]
nop
nop
nop
nop
nop
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420bb0
jmp 0x420bc0
mov edx, dword [ebp + 8]
mov byte [edi], 0
movzx eax, byte [esi + 0x30]
test al, al
je 0x420bdb
lea ecx, [esi + 0x31]
nop
nop
mov byte [edi], al
inc edi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420bd0
mov byte [edi], 0
movzx eax, byte [edx]
test al, al
je 0x420bfb
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 0x420bf0
mov dword [esi + 8], edi
mov byte [edi], 0x3a
mov dword [esi + 0x30], 0xf3d70b0d
mov dword [esi + 0x34], 0xe3e7f7e3
mov dword [esi + 0x38], 0xfc2a33ed
mov dword [esi + 0x3c], 0xe0fdefe9
mov dword [esi + 0x40], 0xe7f7faf3
mov dword [esi + 0x44], 0xf8d51f19
mov dword [esi + 0x48], 0xf8fff7f6
mov dword [esi + 0x4c], 0xf1f1f4e8
mov dword [esi + 0x50], 0xd3f7011a
mov dword [esi + 0x54], 0xc3c7d7c3
mov dword [esi + 0x58], 0xf82024cd
mov dword [esi + 0x5c], 0xf803cec9
mov dword [esi + 0x60], 0xdce1d3d5
mov dword [esi + 0x64], 0xc3d3ded7
mov dword [esi + 0x68], 0xc2dff215
mov dword [esi + 0x6c], 0xecf61d06
mov dword [esi + 0x70], 0xf321332d
mov dword [esi + 0x74], 0x1e2a0837
mov dword [esi + 0x78], 0xc0b221d
mov dword [esi + 0x7c], 0xfb2021
mov dword [esi + 0x80], 0xe1152100
mov dword [esi + 0x84], 0x11341c
mov dword [esi + 0x88], 0xd1d7e433
mov dword [esi + 0x8c], 0xf23d380f
mov dword [esi + 0x90], 0x30000437
mov dword [esi + 0x94], 0x20d060b
mov dword [esi + 0x98], 0xe3cc41c
mov dword [esi + 0x9c], 0x71e1e
mov dword [esi + 0xa0], 0xc2d2cb1e
mov dword [esi + 0xa4], 0xfafcf8c7
mov dword [esi + 0xa8], 0xf9f2
mov eax, 0x22aacf40
mov ecx, 0xbaaa61bf
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esi + eax - 0x22aacf10]
lea edi, [ecx + 0x45559e80]
and edi, 0x4b
mov edx, eax
and edx, 0xb4
or edx, edi
lea edi, [ecx + 0x22aacf00]
or edi, ebx
xor edx, 0xb4
or edx, ecx
and edx, ebx
xor edx, edi
mov ebx, 0xbe
sub ebx, edx
and edx, 1
or ebx, 1
add ebx, edx
mov byte [esi + eax - 0x22aacf10], bl
inc eax
dec ecx
cmp eax, 0x22aacfbc
jne 0x420d10
mov edx, dword [esi + 8]
inc edx
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx]
test al, al
je 0x420d7b
inc ecx
nop
nop
nop
mov byte [edx], al
inc edx
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420d70
mov byte [edx], 0
movzx eax, byte [esi + 0x30]
test al, al
je 0x420d9b
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 0x420d90
mov byte [edx], 0
mov edi, edx
mov ebx, dword [esi + 4]
sub edi, ebx
push 0xd0026952
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
push 0
push edi
push ebx
mov edi, dword [esi + 0x20]
push dword [edi]
call eax
cmp eax, 0xffffffff
jne 0x420e0a
cmp dword [edi], 0xffffffff
je 0x420e0a
push 0x59ea2086
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
push 2
push dword [edi]
call eax
push 0x2e775759
push dword [0x44ba34]
call fcn.0043f9f0
add esp, 8
push dword [edi]
call eax
mov dword [edi], 0xffffffff
xor eax, eax
jmp 0x4210e5
cmp eax, 0xffffffff
je 0x420f37
push 0x400
call fcn.004083b0
add esp, 4
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], eax
add eax, 0x400
mov dword [esi + 0x18], eax
lea eax, [esi + 0x10]
mov ecx, edi
push eax
call fcn.00421340
mov cl, 1
mov dword [esi + 4], ecx
test al, al
je 0x4210cd
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov ebx, ecx
sub ebx, eax
cmp ecx, dword [esi + 0x18]
jne 0x420fa2
mov dword [esi + 8], ecx
mov dword [esi + 4], eax
lea eax, [ebx + 1]
mov ecx, ebx
shr ecx, 1
mov dword [esi + 0x24], ecx
lea edi, [ecx + ebx]
cmp edi, eax
ja 0x420e72
mov edi, eax
push edi
call fcn.004083b0
add esp, 4
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x420f94
mov dword [esi + 0x28], edi
cmp eax, ecx
mov dword [esi + 0xc], ebx
mov edx, dword [esi + 8]
mov dword [esi + 0x1c], eax
jbe 0x420f3e
cmp edx, eax
jbe 0x420f3e
test ebx, ebx
je 0x420f80
mov edx, dword [esi + 0xc]
lea eax, [ecx + edx]
dec eax
mov ecx, dword [esi + 0x1c]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x420ed5
neg edi
xor edx, edx
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x420ec2
add eax, edx
add ecx, edx
add edx, dword [esi + 0xc]
mov edi, dword [esi + 4]
sub edi, dword [esi + 8]
cmp edi, 0xfffffff8
ja 0x420f80
neg edx
xor edi, edi
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x420ee8
jmp 0x420f80
xor eax, eax
jmp 0x4210e5
mov edx, ecx
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 + 4]
mov ecx, dword [esi + 0x24]
and ecx, 1
mov eax, ebx
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 0x420f80
mov ecx, dword [esi + 0xc]
and ecx, 2
movzx edx, byte [edx + ecx]
mov eax, dword [esi + 4]
mov byte [eax + ecx], dl
push dword [esi + 0x10]
call fcn.004083c0
add esp, 4
mov ebx, dword [esi + 0xc]
mov edi, dword [esi + 0x28]
mov eax, dword [esi + 0x1c]
mov dword [esi + 0x10], eax
lea ecx, [eax + ebx]
mov dword [esi + 0x14], ecx
add edi, eax
mov dword [esi + 0x18], edi
mov byte [eax + ebx], 0
mov eax, dword [esi + 0x10]
mov dword [esi + 8], eax
mov eax, dword [esi + 0x14]
inc eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], eax
mov dword [esi + 0x30], 0x718a8b7c
mov dword [esi + 0x34], 0x4e545051
mov dword [esi + 0x38], 0x4a4e4c5c
mov byte [esi + 0x3c], 0x38
mov dword [esi + 0x3d], 0
mov dword [esi + 0x40], 0
mov ecx, 0xa744ef99
mov eax, 0x4e89df32
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi + 4], eax
movzx eax, byte [esi + ecx + 0x58bb1097]
mov edx, ecx
xor edx, 0x6c1e5010
mov ebx, dword [esi + 4]
and ebx, 0x6815f5e
sub ebx, edx
xor ebx, eax
mov eax, ebx
xor eax, 0x27c11dad
mov edx, ebx
or edx, 0xd83ee252
and edx, eax
mov eax, edx
and eax, 0xfd
mov edi, ebx
and edi, 2
or edx, 2
imul edx, edi
xor edi, 2
imul edi, eax
xor ebx, 0x52
add ebx, edx
add ebx, edi
inc bl
mov byte [esi + ecx + 0x58bb1097], bl
mov eax, dword [esi + 4]
inc ecx
add eax, 2
cmp ecx, 0xa744efad
jne 0x420ff0
movzx edx, byte [esi + 0x30]
mov edi, dword [esi + 8]
mov eax, edi
mov dword [esi + 0xc], edi
test dl, dl
mov ecx, dword [esi + 0x20]
je 0x4210b6
lea eax, [esi + 0x30]
mov dword [esi + 4], eax
mov ebx, edi
mov dword [esi + 0xc], edi
jmp 0x42108d
mov eax, dword [esi + 4]
movzx edx, byte [eax]
test dl, dl
mov ecx, dword [esi + 0x20]
je 0x4210b6
movzx eax, byte [ebx]
test al, al
je 0x4210bc
inc ebx
inc dword [esi + 4]
mov ecx, dword [esi + 0xc]
lea edi, [ecx + 1]
cmp al, dl
je 0x4210a9
mov eax, edi
mov dword [esi + 0xc], edi
mov ebx, edi
mov edi, dword [esi + 8]
je 0x421080
lea eax, [esi + 0x30]
mov dword [esi + 4], eax
jmp 0x421080
cmp dword [esi + 0xc], 0
jne 0x4210f7
push 0x3ea
call fcn.00420390
mov dword [esi + 4], 0
mov eax, dword [esi + 0x10]
test eax, eax
je 0x4210e2
cmp eax, dword [esi + 0x14]
je 0x4210e2
push eax
call fcn.004083c0
add esp, 4
mov eax, dword [esi + 4]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
cmp al, dl
mov ecx, dword [esi + 0x20]
je 0x4210cd
mov edx, edi
mov eax, dword [esi + 0x1c]
sub edx, eax
je 0x42111d
mov ebx, eax
xor ecx, ecx
mov dword [esi + 8], edi
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 + 0x20]
add dword [esi + 0x14], edx
lea eax, [esi + 0x10]
push eax
call fcn.00421340
test al, al
je 0x4210c6
mov dword [esi + 4], eax
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
mov ebx, ecx
sub ebx, eax
cmp ecx, dword [esi + 0x18]
jne 0x421296
mov dword [esi + 0xc], ecx
mov dword [esi + 8], eax
lea eax, [ebx + 1]
mov ecx, ebx
shr ecx, 1
mov dword [esi + 0x28], ecx
lea edi, [ecx + ebx]
cmp edi, eax
ja 0x421159
mov edi, eax
push edi
call fcn.004083b0
add esp, 4
mov ecx, dword [esi + 8]
test ecx, ecx
je 0x421288
mov dword [esi + 0xac], edi
cmp eax, ecx
mov dword [esi + 0x1c], ebx
mov edx, dword [esi + 0xc]
mov dword [esi + 0x24], eax
jbe 0x42122f
cmp edx, eax
jbe 0x42122f
test ebx, ebx
je 0x421271
mov edx, dword [esi + 0x1c]
lea eax, [ecx + edx]
dec eax
mov ecx, dword [esi + 0x24]
add ecx, edx
dec ecx
mov edi, edx
and edi, 7
je 0x4211c3
neg edi
xor edx, edx
nop
nop
nop
nop
movzx ebx, byte [eax + edx]
mov byte [ecx + edx], bl
dec edx
cmp edi, edx
jne 0x4211b0
add eax, edx
add ecx, edx
add edx, dword [esi + 0x1c]
mov edi, dword [esi + 8]
sub edi, dword [esi + 0xc]
cmp edi, 0xfffffff8
ja 0x421271
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
movzx ebx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], bl
movzx ebx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], bl
movzx ebx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], bl
movzx ebx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], bl
movzx ebx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], bl
movzx ebx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], bl
movzx ebx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], bl
add edi, 0xfffffff8
cmp edx, edi
jne 0x4211e0
jmp 0x421271
mov edx, ecx
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 + 8]
mov ecx, dword [esi + 0x28]
and ecx, 1
mov eax, ebx
mov ebx, edx
mov dword [esi + 8], edi
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
test al, 1
je 0x421271
mov ecx, dword [esi + 0x1c]
and ecx, 2
movzx edx, byte [edx + ecx]
mov eax, dword [esi + 8]
mov byte [eax + ecx], dl
push dword [esi + 0x10]
call fcn.004083c0
add esp, 4
mov ebx, dword [esi + 0x1c]
mov edi, dword [esi + 0xac]
mov eax, dword [esi + 0x24]
mov dword [esi + 0x10], eax
lea ecx, [eax + ebx]
mov dword [esi + 0x14], ecx
add edi, eax
mov dword [esi + 0x18], edi
mov byte [eax + ebx], 0
mov ebx, dword [esi + 0x10]
mov eax, dword [esi + 0x14]
inc eax
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], eax
mov word [esi + 0x30], 0x1715
mov byte [esi + 0x32], 0xe
mov word [esi + 0x33], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esi + ecx + 0x30]
lea edx, [ecx - 0x4e0b957e]
or edx, eax
mov edi, 0x4e0b957d
sub edi, ecx
or edi, eax
add edi, ecx
sub edx, edi
lea eax, [edx - 0x2bba7f0e]
mov edi, edx
and edi, 1
add edx, edi
add edx, 0xd44580f2
mov edi, eax
xor eax, 1
add edx, eax
and edi, 0xfe
sub edx, edi
mov byte [esi + ecx + 0x30], dl
mov eax, ecx
and eax, 1
xor ecx, 1
lea ecx, [ecx + eax*2]
cmp ecx, 5
jb 0x4212c0
xor ecx, ecx
mov edi, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edi + ecx]
movzx edx, byte [esi + ecx + 0x30]
test al, al
je 0x4210f0
inc ecx
cmp al, dl
je 0x421320
jmp 0x4210f0