Function at 0x4227f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa08
mov dword [esp + 0xc0], 0x93479145
mov dword [esp + 0xc4], 0x9f029d01
mov dword [esp + 0xc8], 0x9b0e9931
mov dword [esp + 0xcc], 0x871a852d
mov dword [esp + 0xd0], 0x83578119
mov dword [esp + 0xd4], 0x8f138d1f
mov dword [esp + 0xd8], 0x8b5f892a
mov dword [esp + 0xdc], 0x77ef75e8
mov dword [esp + 0xe0], 0x73df71e0
mov dword [esp + 0xe4], 0x7fe87db9
mov dword [esp + 0xe8], 0x7be679d5
mov dword [esp + 0xec], 0x67f165fb
mov dword [esp + 0xf0], 0x63c961f2
mov dword [esp + 0xf4], 0x6ffb6dba
mov dword [esp + 0xf8], 0x6bc069ff
mov dword [esp + 0xfc], 0x57c355c3
mov dword [esp + 0x100], 0x53e45186
mov dword [esp + 0x104], 0x5fc25df1
mov dword [esp + 0x108], 0x5bcd59c7
mov dword [esp + 0x10c], 0x47ed45d6
mov dword [esp + 0x110], 0x43ef41f3
mov dword [esp + 0x114], 0x4fd04dde
mov dword [esp + 0x118], 0x4be949e1
mov dword [esp + 0x11c], 0x37363599
mov dword [esp + 0x120], 0
lea edx, [esp + 0x120]
mov eax, 0x64
nop
nop
movzx ecx, byte [esp + eax + 0x5c]
mov esi, eax
and esi, ecx
add esi, esi
sub ecx, esi
add ecx, eax
add ecx, 0xfa8a6a0b
mov esi, ecx
and esi, 1
xor ecx, 1
lea ecx, [ecx + esi*2]
mov byte [esp + eax + 0x5c], cl
inc eax
cmp eax, 0xc8
jne 0x422920
lea edi, [esp + 0x60]
lea eax, [esp + 0xc0]
mov esi, eax
mov ecx, 0x18
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0xc0]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov dword [esp + 0x2c], 0
mov dword [esp + 0xc0], 0xf4f50a0b
mov dword [esp + 0xc4], 0
mov ecx, 0xe87bda01
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax]
mov esi, ecx
or esi, edx
lea edi, [ecx + 0x17842600]
mov ebx, edx
not ebx
or ebx, edi
add ebx, edx
mov edi, 0xfffffffe
sub edi, ebx
and edi, esi
mov esi, 0x8a6b4208
sub esi, edi
mov edx, esi
add edi, 0x7594bdf7
mov ebx, edi
and edi, 0x592f5e2d
and esi, 0xa2d0a1d2
or esi, edi
not ebx
and ebx, 1
or ebx, esi
and edx, 1
or ebx, edx
xor ebx, 0x2c
add ebx, edx
mov byte [eax], bl
inc eax
dec ecx
cmp ecx, 0xe87bd9f9
jne 0x4229a0
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x4521f4]
test ecx, ecx
je 0x422a54
xor edx, edx
mov esi, dword [0x4521f8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc85f7986
je 0x422a30
inc edx
cmp ecx, edx
jne 0x422a20
jmp 0x422a54
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422a54
lea eax, [esp + 0x2c]
push eax
push 0
push 0
push 5
push 4
push dword [0x4521fc]
push ecx
call fcn.00442500
add esp, 0x1c
cmp eax, 0xc0000004
jne 0x422b30
push dword [esp + 0x2c]
call fcn.0043fa10
add esp, 4
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov dword [esp + 0xc0], 0xf4f50a0b
mov dword [esp + 0xc4], 0
lea eax, [esp + 0xc0]
mov edx, 0xe87bda01
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [eax]
mov esi, edx
or esi, ecx
lea edi, [edx + 0x17842600]
mov ebx, ecx
not ebx
or ebx, edi
add ebx, ecx
mov ecx, 0xfffffffe
sub ecx, ebx
and ecx, esi
mov edi, 0x8a6b4208
sub edi, ecx
mov esi, edi
add ecx, 0x7594bdf7
mov ebx, ecx
and ecx, 0x592f5e2d
and edi, 0xa2d0a1d2
or edi, ecx
not ebx
and ebx, 1
or ebx, edi
and esi, 1
or ebx, esi
xor ebx, 0x2c
add ebx, esi
mov byte [eax], bl
inc eax
dec edx
cmp edx, 0xe87bd9f9
jne 0x422aa0
mov eax, dword [esp + 0xc0]
mov edx, dword [0x4521f4]
test edx, edx
je 0x422b3e
xor ecx, ecx
mov esi, dword [0x4521f8]
mov edi, dword [ebp + 8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + ecx*8], 0xc85f7986
je 0x422b43
inc ecx
cmp edx, ecx
jne 0x422b20
jmp 0x422b68
xor ecx, ecx
xor edx, edx
xor esi, esi
mov ebx, dword [ebp + 0x14]
jmp 0x423158
mov edi, dword [ebp + 8]
jmp 0x422b68
mov ecx, dword [esi + ecx*8 + 4]
cmp ecx, eax
je 0x422b68
push 0
push dword [esp + 8]
push dword [esp + 0x28]
push 5
push 4
push dword [0x4521fc]
push ecx
call fcn.00442500
add esp, 0x1c
test eax, eax
mov ebx, dword [ebp + 0x14]
js 0x423128
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov dword [esp + 0x10], 0
mov edx, ecx
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
jmp 0x422bb5
mov ecx, ebx
call fcn.0043feb0
mov edx, dword [esp + 4]
mov eax, dword [edx]
test eax, eax
je 0x423140
mov ecx, dword [edx + eax + 0x3c]
add eax, edx
mov dword [esp + 4], eax
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [ecx + edx]
movzx esi, word [edi + edx]
test eax, eax
je 0x422be4
add edx, 2
cmp ax, si
je 0x422bd0
movzx ecx, si
mov edx, ecx
xor edx, eax
not ecx
and ecx, eax
add ecx, ecx
cmp ecx, edx
jne 0x422ba7
mov ecx, dword [esp + 4]
mov eax, dword [ecx + 0x44]
mov dword [ebx + 8], eax
mov eax, dword [ecx + 0xdc]
mov dword [ebx + 0xc], eax
mov ecx, ebx
push 0x410
call fcn.0043fd50
test eax, eax
js 0x422ba7
mov dword [esp + 0x28], 0
mov eax, dword [ebx]
mov dword [esp + 0xc], eax
mov dword [esp + 0xc0], 0xf4f50a0b
mov dword [esp + 0xc4], 0
mov eax, 0xe87bda01
lea edx, [esp + 0xc0]
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edx]
mov edi, eax
or edi, ecx
lea esi, [eax + 0x17842600]
mov ebx, ecx
not ebx
or ebx, esi
add ebx, ecx
mov esi, 0xfffffffe
sub esi, ebx
and esi, edi
mov edi, 0x8a6b4208
sub edi, esi
mov ecx, edi
add esi, 0x7594bdf7
mov ebx, esi
and esi, 0x592f5e2d
and edi, 0xa2d0a1d2
or edi, esi
not ebx
and ebx, 1
or ebx, edi
and ecx, 1
or ebx, ecx
xor ebx, 0x2c
add ebx, ecx
mov byte [edx], bl
inc edx
dec eax
cmp eax, 0xe87bd9f9
jne 0x422c50
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x4521f4]
test ecx, ecx
je 0x422d10
xor edx, edx
mov esi, dword [0x4521f8]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x62429966
je 0x422ce0
inc edx
cmp ecx, edx
jne 0x422cd0
jmp 0x422d10
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422d10
lea eax, [esp + 0x28]
push eax
push 0
push 0
push 0x2b
push dword [esp + 0x1c]
push 5
push dword [0x4521fc]
push ecx
call fcn.00442500
add esp, 0x20
nop
nop
nop
nop
nop
nop
nop
nop
cmp eax, 0xc0000004
mov ebx, dword [ebp + 0x14]
jne 0x422e00
mov eax, dword [esp + 0x28]
add eax, 2
push eax
call fcn.0043fa10
add esp, 4
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov eax, dword [ebx]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc0], 0xf4f50a0b
mov dword [esp + 0xc4], 0
mov eax, 0xe87bda01
lea edi, [esp + 0xc0]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [edi]
mov edx, eax
or edx, ecx
lea esi, [eax + 0x17842600]
mov ebx, ecx
not ebx
or ebx, esi
add ebx, ecx
mov esi, 0xfffffffe
sub esi, ebx
and esi, edx
mov ecx, 0x8a6b4208
sub ecx, esi
mov edx, ecx
add esi, 0x7594bdf7
mov ebx, esi
and esi, 0x592f5e2d
and ecx, 0xa2d0a1d2
or ecx, esi
not ebx
and ebx, 1
or ebx, ecx
and edx, 1
or ebx, edx
xor ebx, 0x2c
add ebx, edx
mov byte [edi], bl
inc edi
dec eax
cmp eax, 0xe87bd9f9
jne 0x422d70
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x4521f4]
test ecx, ecx
je 0x422e08
mov ebx, dword [esp + 0x24]
add ebx, 2
xor edx, edx
mov esi, dword [0x4521f8]
mov edi, dword [ebp + 0xc]
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x62429966
je 0x422e0d
inc edx
cmp ecx, edx
jne 0x422df0
jmp 0x422e33
mov edi, dword [ebp + 8]
jmp 0x422f4d
mov edi, dword [ebp + 0xc]
jmp 0x422e33
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422e33
push 0
push ebx
push dword [esp + 0x14]
push 0x2b
push dword [esp + 0x2c]
push 5
push dword [0x4521fc]
push ecx
call fcn.00442500
add esp, 0x20
test eax, eax
mov ebx, dword [ebp + 0x14]
js 0x422f3e
mov ecx, dword [esp + 0xc]
movzx eax, word [ecx]
shr eax, 1
mov ecx, dword [ecx + 4]
xor edx, edx
nop
nop
nop
nop
cmp eax, edx
je 0x422e68
movzx esi, word [edi + edx*2]
cmp si, word [ecx + edx*2]
jne 0x422f3e
inc edx
test si, si
jne 0x422e50
mov ecx, ebx
call fcn.004403b0
cmp eax, 2
mov edi, dword [ebp + 8]
jne 0x422f41
mov ecx, ebx
push 0
push 0x30
lea eax, [esp + 0x38]
push eax
push 0
call fcn.00440200
test eax, eax
js 0x422f41
mov ecx, ebx
push 0
push 0
push 0x28
lea eax, [esp + 0x684]
push eax
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call fcn.004406f0
test eax, eax
js 0x422f41
mov ecx, ebx
push 0
push 0
push 0x80
lea eax, [esp + 0xcc]
push eax
push dword [esp + 0x6ac]
push dword [esp + 0x6ac]
call fcn.004406f0
test eax, eax
js 0x422f41
movzx eax, word [esp + 0x132]
push eax
call fcn.0043fa10
add esp, 4
mov esi, eax
movzx eax, word [esp + 0x132]
mov ecx, ebx
push 0
push 0
push eax
push esi
push dword [esp + 0x14c]
push dword [esp + 0x14c]
call fcn.004406f0
test eax, eax
js 0x42311a
movzx edi, word [esp + 0x60]
mov dword [esp + 8], esi
mov eax, esi
test di, di
je 0x422fa1
lea ecx, [esp + 0x60]
mov eax, dword [esp + 8]
mov edx, eax
jmp 0x422f78
mov edi, dword [ebp + 8]
push dword [esp + 0xc]
call fcn.0043fae0
add esp, 4
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x14]
je 0x422ba0
cmp dword [esp + 0x10], 0
je 0x422ba0
jmp 0x423140
movzx edi, word [ecx]
test di, di
je 0x422fa1
movzx esi, word [edx]
test si, si
je 0x423113
add edx, 2
add ecx, 2
lea ebx, [eax + 2]
cmp si, di
je 0x422f96
mov eax, ebx
mov edx, ebx
mov ebx, dword [ebp + 0x14]
je 0x422f70
lea ecx, [esp + 0x60]
jmp 0x422f70
test eax, eax
mov edi, dword [ebp + 8]
je 0x423116
mov ecx, ebx
push 0
push 0
push 0x20
lea eax, [esp + 0x62c]
push eax
push dword [esp + 0x6a4]
push dword [esp + 0x6a4]
call fcn.004406f0
test eax, eax
js 0x423116
mov eax, dword [esp + 0x690]
mov ecx, dword [esp + 0x694]
add eax, 0x10
mov dword [esp + 0x24], eax
adc ecx, 0
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x630]
mov edx, dword [esp + 0x634]
mov dword [esp + 0x504], edx
mov dword [esp + 0x500], eax
jmp 0x423048
cmp cx, dx
je 0x4230e9
push edi
call fcn.0043fae0
add esp, 4
mov eax, dword [esp + 0x500]
mov edx, dword [esp + 0x504]
mov ecx, edx
xor ecx, dword [esp + 0x1c]
mov esi, eax
xor esi, dword [esp + 0x24]
or esi, ecx
mov edi, dword [ebp + 8]
je 0x423116
mov ecx, ebx
push 0
push 0
push 0x68
lea esi, [esp + 0x50c]
push esi
push edx
push eax
call fcn.004406f0
test eax, eax
js 0x423116
movzx eax, word [esp + 0x55a]
push eax
call fcn.0043fa10
add esp, 4
mov edi, eax
movzx eax, word [esp + 0x55a]
mov ecx, ebx
push 0
push 0
push eax
push edi
push dword [esp + 0x574]
push dword [esp + 0x574]
call fcn.004406f0
test eax, eax
js 0x42301a
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp + 0x10]
movzx ecx, word [ecx + eax]
lea edx, [ecx - 0x41]
cmp dx, 0x1a
jae 0x4230c3
or ecx, 0x20
movzx edx, word [edi + eax]
lea esi, [edx - 0x41]
cmp si, 0x1a
jae 0x4230d3
or edx, 0x20
test cx, cx
je 0x423011
add eax, 2
cmp cx, dx
je 0x4230b0
jmp 0x423011
mov eax, dword [esp + 0x530]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x534]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x540]
mov dword [esp + 0x10], eax
push edi
call fcn.0043fae0
add esp, 4
mov edi, dword [ebp + 8]
mov esi, dword [esp + 8]
push esi
call fcn.0043fae0
add esp, 4
jmp 0x422f41
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
push dword [esp + 0x20]
call fcn.0043fae0
add esp, 4
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov eax, dword [ebp + 0x18]
mov dword [eax], edx
mov dword [eax + 4], esi
mov eax, dword [ebp + 0x1c]
mov dword [eax], ecx
mov ecx, ebx
call fcn.0043fea0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret