Function at 0x4229c0
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], 0x29f92bf7
mov dword [esp + 0xc4], 0x2dba2fb3
mov dword [esp + 0xc8], 0xd13ed3c3
mov dword [esp + 0xcc], 0xd542d73f
mov dword [esp + 0xd0], 0xd909db4b
mov dword [esp + 0xd4], 0xdd45df4d
mov dword [esp + 0xd8], 0xc111c33a
mov dword [esp + 0xdc], 0xc559c754
mov dword [esp + 0xe0], 0xc921cb54
mov dword [esp + 0xe4], 0xcd5ccf0b
mov dword [esp + 0xe8], 0xf166f327
mov dword [esp + 0xec], 0xf567f769
mov dword [esp + 0xf0], 0xf917fb62
mov dword [esp + 0xf4], 0xfd6dff2a
mov dword [esp + 0xf8], 0xe10ce36d
mov dword [esp + 0xfc], 0xe575e771
mov dword [esp + 0x100], 0xe918eb36
mov dword [esp + 0x104], 0xed7aef03
mov dword [esp + 0x108], 0x91039375
mov dword [esp + 0x10c], 0x957b9706
mov dword [esp + 0x110], 0x99719b61
mov dword [esp + 0x114], 0x9d049f0e
mov dword [esp + 0x118], 0x81678373
mov dword [esp + 0x11c], 0x8586876b
mov dword [esp + 0x120], 0
mov ebx, dword [ebp + 8]
lea eax, [esp + 0x120]
xor ecx, ecx
nop
nop
mov esi, ecx
and esi, 0x31
xor esi, 0xb1
mov edx, ecx
and edx, 0x4e
sub edx, esi
add dl, 0xa8
xor dl, byte [esp + ecx + 0xc0]
add dl, 0x2d
mov byte [esp + ecx + 0xc0], dl
inc ecx
cmp ecx, 0x64
jne 0x422af0
lea edi, [esp + 0x60]
lea edx, [esp + 0xc0]
mov ecx, 0x18
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0xc0]
xor ecx, ecx
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x28], 0
mov dword [esp + 0xc0], 0x8c8d8a8b
mov eax, 0x2556f662
mov ecx, 0x9d
nop
nop
nop
movzx esi, byte [esp + eax - 0x2556f5a2]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
mov esi, edx
xor esi, 0xeb
and edx, 0x14
add edx, edx
sub edx, esi
inc dl
mov byte [esp + eax - 0x2556f5a2], dl
inc eax
dec ecx
cmp eax, 0x2556f666
jne 0x422b60
mov eax, dword [esp + 0xc0]
mov ecx, dword [0x44fbb4]
test ecx, ecx
je 0x422be4
xor edx, edx
mov esi, dword [0x44fbb8]
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xc85f7986
je 0x422bc0
inc edx
cmp ecx, edx
jne 0x422bb0
jmp 0x422be4
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x422be4
lea eax, [esp + 0x28]
push eax
push 0
push 0
push 5
push 4
push dword [0x44fbbc]
push ecx
call fcn.004403c0
add esp, 0x1c
cmp eax, 0xc0000004
jne 0x422c80
push dword [esp + 0x28]
call fcn.0043da10
add esp, 4
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 0xc0], 0x8c8d8a8b
mov eax, 0x2556f662
mov esi, 0x9d
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x2556f5a2]
mov edx, esi
xor edx, eax
and edx, edi
xor edx, eax
mov edi, edx
xor edi, 0xeb
and edx, 0x14
add edx, edx
sub edx, edi
inc dl
mov byte [esp + eax - 0x2556f5a2], dl
inc eax
dec esi
cmp eax, 0x2556f666
jne 0x422c20
mov eax, dword [esp + 0xc0]
mov edx, dword [0x44fbb4]
test edx, edx
je 0x422cb0
xor esi, esi
mov edi, dword [0x44fbb8]
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0xc85f7986
je 0x422c8e
inc esi
cmp edx, esi
jne 0x422c70
jmp 0x422cb0
xor edx, edx
xor esi, esi
xor edi, edi
mov ecx, dword [ebp + 0x14]
jmp 0x423211
mov edx, dword [edi + esi*8 + 4]
cmp edx, eax
je 0x422cb0
push 0
push ecx
push dword [esp + 0x28]
push 5
push 4
push dword [0x44fbbc]
push edx
call fcn.004403c0
add esp, 0x1c
test eax, eax
js 0x4231de
mov esi, dword [esp + 0x20]
mov eax, dword [esi]
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
jmp 0x422cf2
mov ecx, dword [ebp + 0x14]
call fcn.0043deb0
mov eax, dword [esi]
test eax, eax
je 0x4231f6
mov ecx, dword [esi + eax + 0x3c]
add esi, eax
xor edx, edx
nop
nop
nop
nop
nop
nop
movzx eax, word [ecx + edx]
movzx edi, word [ebx + edx]
test eax, eax
je 0x422d14
add edx, 2
cmp ax, di
je 0x422d00
movzx ecx, di
mov edx, eax
not edx
and edx, ecx
not ecx
and ecx, eax
cmp ecx, edx
jne 0x422ce8
mov eax, dword [esi + 0x44]
mov edi, dword [ebp + 0x14]
mov dword [edi + 8], eax
mov eax, dword [esi + 0xdc]
mov dword [edi + 0xc], eax
mov ecx, edi
push 0x410
call fcn.0043dd60
test eax, eax
js 0x422ce8
mov dword [esp + 0x24], 0
mov eax, dword [edi]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc0], 0x8c8d8a8b
mov eax, 0x2556f662
mov edi, 0x9d
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x2556f5a2]
mov edx, edi
xor edx, eax
and edx, ecx
xor edx, eax
mov ecx, edx
xor ecx, 0xeb
and edx, 0x14
add edx, edx
sub edx, ecx
inc dl
mov byte [esp + eax - 0x2556f5a2], dl
inc eax
dec edi
cmp eax, 0x2556f666
jne 0x422d70
mov eax, dword [esp + 0xc0]
mov edx, dword [0x44fbb4]
test edx, edx
je 0x422e00
xor edi, edi
mov ecx, dword [0x44fbb8]
nop
nop
nop
nop
nop
nop
cmp dword [ecx + edi*8], 0x62429966
je 0x422dd0
inc edi
cmp edx, edi
jne 0x422dc0
jmp 0x422e00
mov ecx, dword [ecx + edi*8 + 4]
cmp ecx, eax
je 0x422e00
lea eax, [esp + 0x24]
push eax
push 0
push 0
push 0x2b
push dword [esp + 0x20]
push 5
push dword [0x44fbbc]
push ecx
call fcn.004403c0
add esp, 0x20
nop
nop
nop
nop
nop
nop
nop
nop
cmp eax, 0xc0000004
jne 0x4231c3
mov eax, dword [esp + 0x24]
mov ecx, eax
and ecx, 2
xor eax, 2
lea eax, [eax + ecx*2]
push eax
call fcn.0043da10
add esp, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov dword [esp + 0xc0], 0x8c8d8a8b
mov eax, 0x2556f662
mov edi, 0x9d
nop
nop
nop
movzx edx, byte [esp + eax - 0x2556f5a2]
mov ecx, edi
xor ecx, eax
and ecx, edx
xor ecx, eax
mov edx, ecx
xor edx, 0xeb
and ecx, 0x14
add ecx, ecx
sub ecx, edx
inc cl
mov byte [esp + eax - 0x2556f5a2], cl
inc eax
dec edi
cmp eax, 0x2556f666
jne 0x422e50
mov eax, dword [esp + 0xc0]
mov edi, dword [0x44fbb4]
test edi, edi
je 0x422ed9
add dword [esp + 8], 2
xor ecx, ecx
mov edx, dword [0x44fbb8]
nop
cmp dword [edx + ecx*8], 0x62429966
je 0x422eb0
inc ecx
cmp edi, ecx
jne 0x422ea0
jmp 0x422ed9
mov ecx, dword [edx + ecx*8 + 4]
cmp ecx, eax
je 0x422ed9
push 0
push dword [esp + 0xc]
push dword [esp + 0x18]
push 0x2b
push dword [esp + 0x14]
push 5
push dword [0x44fbbc]
push ecx
call fcn.004403c0
add esp, 0x20
test eax, eax
js 0x4231b7
mov ecx, dword [esp + 0x10]
movzx eax, word [ecx]
shr eax, 1
mov ecx, dword [ecx + 4]
xor edx, edx
nop
cmp eax, edx
je 0x422f0b
mov edi, dword [ebp + 0xc]
movzx edi, word [edi + edx*2]
cmp di, word [ecx + edx*2]
jne 0x4231b7
inc edx
test di, di
jne 0x422ef0
mov edi, dword [ebp + 0x14]
mov ecx, edi
call fcn.0043e300
cmp eax, 2
jne 0x4231b7
mov ecx, edi
push 0
push 0x30
lea eax, [esp + 0x38]
push eax
push 0
call fcn.0043e130
test eax, eax
js 0x4231b7
mov ecx, edi
push 0
push 0
push 0x28
lea eax, [esp + 0x684]
push eax
push dword [esp + 0x4c]
push dword [esp + 0x4c]
call fcn.0043e630
test eax, eax
js 0x4231b7
mov ecx, edi
push 0
push 0
push 0x80
lea eax, [esp + 0xcc]
push eax
push dword [esp + 0x6ac]
push dword [esp + 0x6ac]
call fcn.0043e630
test eax, eax
js 0x4231b7
movzx eax, word [esp + 0x132]
push eax
call fcn.0043da10
add esp, 4
movzx edx, word [esp + 0x132]
mov ecx, edi
push 0
push 0
push edx
mov dword [esp + 0x18], eax
push eax
push dword [esp + 0x14c]
push dword [esp + 0x14c]
call fcn.0043e630
test eax, eax
js 0x4231aa
movzx edi, word [esp + 0x60]
mov eax, dword [esp + 0xc]
mov dword [esp + 4], eax
test di, di
je 0x42302c
lea edx, [esp + 0x60]
mov eax, dword [esp + 0xc]
mov ecx, eax
mov dword [esp + 4], eax
jmp 0x422ff8
movzx edi, word [edx]
test di, di
je 0x42302c
movzx eax, word [ecx]
test ax, ax
je 0x4231aa
add ecx, 2
add edx, 2
mov dword [esp + 8], edx
mov edx, dword [esp + 4]
add edx, 2
cmp ax, di
je 0x423020
mov dword [esp + 4], edx
mov ecx, edx
mov edx, dword [esp + 8]
je 0x422ff0
lea edx, [esp + 0x60]
jmp 0x422ff0
cmp dword [esp + 4], 0
je 0x4231aa
mov ecx, dword [ebp + 0x14]
push 0
push 0
push 0x20
lea eax, [esp + 0x62c]
push eax
push dword [esp + 0x6a4]
push dword [esp + 0x6a4]
call fcn.0043e630
test eax, eax
js 0x4231aa
mov eax, dword [esp + 0x690]
mov ecx, dword [esp + 0x694]
add eax, 0x10
mov dword [esp + 4], eax
adc ecx, 0
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x630]
mov edx, dword [esp + 0x634]
mov dword [esp + 0x504], edx
mov dword [esp + 0x500], eax
jmp 0x4230d4
cmp cx, dx
je 0x42317d
push dword [esp + 8]
call fcn.0043da90
add esp, 4
mov eax, dword [esp + 0x500]
mov edx, dword [esp + 0x504]
mov ecx, edx
xor ecx, dword [esp + 0x2c]
mov edi, eax
xor edi, dword [esp + 4]
or edi, ecx
je 0x4231aa
mov ecx, dword [ebp + 0x14]
push 0
push 0
push 0x68
lea edi, [esp + 0x50c]
push edi
push edx
push eax
call fcn.0043e630
test eax, eax
js 0x4231aa
movzx eax, word [esp + 0x55a]
push eax
call fcn.0043da10
add esp, 4
movzx edx, word [esp + 0x55a]
mov ecx, dword [ebp + 0x14]
push 0
push 0
push edx
mov dword [esp + 0x14], eax
push eax
push dword [esp + 0x574]
push dword [esp + 0x574]
call fcn.0043e630
test eax, eax
js 0x4230a6
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 0x423153
or ecx, 0x20
mov edx, dword [esp + 8]
movzx edx, word [edx + eax]
lea edi, [edx - 0x41]
cmp di, 0x1a
jae 0x423167
or edx, 0x20
test cx, cx
je 0x42309d
add eax, 2
cmp cx, dx
je 0x423140
jmp 0x42309d
mov eax, dword [esp + 0x530]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x534]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x540]
mov dword [esp + 0x14], eax
push dword [esp + 8]
call fcn.0043da90
add esp, 4
mov eax, dword [esp + 0xc]
push eax
call fcn.0043da90
add esp, 4
push dword [esp + 0x10]
call fcn.0043da90
add esp, 4
mov eax, dword [esp + 0x1c]
or eax, dword [esp + 0x18]
je 0x422ce0
cmp dword [esp + 0x14], 0
je 0x422ce0
jmp 0x4231f6
mov dword [esp + 0x14], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
push dword [esp + 0x20]
call fcn.0043da90
add esp, 4
mov ecx, dword [ebp + 0x14]
mov edx, dword [esp + 0x14]
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov eax, dword [ebp + 0x18]
mov dword [eax], esi
mov dword [eax + 4], edi
mov eax, dword [ebp + 0x1c]
mov dword [eax], edx
call fcn.0043dea0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret