Function at 0x4222a2
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, 0xfffffff8
mov eax, 0x2200
call fcn.00409240
mov dword [esp + 0x11f8], 0x13c211f2
mov dword [esp + 0x11fc], 0x1fd51ddd
mov dword [esp + 0x1200], 0x1bc519d5
mov dword [esp + 0x1204], 0x27f625c6
mov dword [esp + 0x1208], 0x23c421fd
mov dword [esp + 0x120c], 0x2ff12dfd
mov dword [esp + 0x1210], 0x2bfa29e1
mov dword [esp + 0x1214], 0x352a
mov byte [esp + 0x1218], 0
mov dword [esp + 0xa88], 0
mov eax, dword [esp + 0xa88]
cmp eax, 0x20
ja 0x420da0
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xa88]
mov ecx, dword [esp + 0xa88]
movzx ecx, byte [esp + ecx + 0x11f8]
lea edx, [eax + 0xd3]
mov esi, ecx
not esi
or esi, edx
and edx, ecx
add edx, esi
neg edx
add eax, edx
add eax, 0xa85a20d2
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x88]
add al, 0x3b
mov ecx, dword [esp + 0xa88]
mov byte [esp + ecx + 0x11f8], al
inc dword [esp + 0xa88]
mov eax, dword [esp + 0xa88]
cmp eax, 0x21
jb 0x420d40
lea eax, [esp + 0x1c]
lea esi, [esp + 0x11f8]
push 0
push 0
push 0x20019
push eax
push esi
call fcn.0043da70
add esp, 0x14
shr eax, 0x1f
xor ecx, ecx
jmp dword [eax*4 + 0x444edc]
jmp dword [0x444ee4]
mov edx, dword [esp + 4]
jmp dword [ecx*4 + 0x444fd4]
mov ecx, dword [esp + 0x20]
inc ecx
xor eax, eax
mov dword [esp + 0x20], ecx
cmp ecx, dword [esp + 0x2c]
setb al
jmp dword [eax*4 + 0x444efc]
mov dword [esp + 4], edx
mov edi, dword [esp + 0x60]
mov eax, edi
inc eax
lea eax, [edi + edi + 2]
jns 0x420e0a
mov eax, 0xffffffff
push eax
call fcn.00409270
add esp, 4
mov dword [esp + 0x70], edi
mov edi, eax
lea eax, [esp + 0x70]
push eax
push edi
push dword [esp + 0x28]
push dword [esp + 0x28]
call fcn.0043dbd0
add esp, 0x10
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x444f04]
mov eax, 1
xor ecx, ecx
jmp dword [0x444f18]
lea eax, [esp + 0x5c]
push dword [esp + 0x1c]
push 0
push 0x20019
push eax
push edi
call fcn.0043da70
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x444f1c]
xor eax, eax
mov ecx, 1
jmp dword [0x444fbc]
jmp dword [ecx*4 + 0x444fc4]
mov dword [esp + 0x64], edi
mov dword [esp + 0x88], 0x8b0b9525
mov dword [esp + 0x8c], 0x8f1e892f
mov dword [esp + 0x90], 0x83198d1f
mov dword [esp + 0x94], 0x871a8113
mov dword [esp + 0x98], 0x7b288512
mov dword [esp + 0x9c], 0x7fe779d3
mov dword [esp + 0xa0], 0x73d87dec
mov dword [esp + 0xa4], 0x77f971e3
mov dword [esp + 0xa8], 0x6b9475e3
mov dword [esp + 0xac], 0x6ff369d9
mov dword [esp + 0xb0], 0x63f96dfb
mov dword [esp + 0xb4], 0x67f961c5
mov dword [esp + 0xb8], 0x5bf665f9
mov dword [esp + 0xbc], 0x5fb859c3
mov dword [esp + 0xc0], 0x53d75deb
mov dword [esp + 0xc4], 0x57c551f4
mov dword [esp + 0xc8], 0x4bc155d9
mov dword [esp + 0xcc], 0x4fd349de
mov dword [esp + 0xd0], 0x43e04ddd
mov dword [esp + 0xd4], 0x47d641f2
mov dword [esp + 0xd8], 0x3bde45d7
mov dword [esp + 0xdc], 0x3fa439a5
mov dword [esp + 0xe0], 0x33a93da5
mov dword [esp + 0xe4], 0x37ff319e
mov dword [esp + 0xe8], 0x2bfd35e3
mov dword [esp + 0xec], 0x2fed29e1
mov dword [esp + 0xf0], 0x23962d94
mov dword [esp + 0xf4], 0x27f421f2
mov dword [esp + 0xf8], 0x1bf125f1
mov dword [esp + 0xfc], 0x1fcf19cd
mov dword [esp + 0x100], 0x13b81dc9
mov dword [esp + 0x104], 0x17d611c7
mov dword [esp + 0x108], 0xbdc15de
mov dword [esp + 0x10c], 0xfd809cd
mov dword [esp + 0x110], 0x3db0dde
mov dword [esp + 0x114], 0x7d401d2
mov dword [esp + 0x118], 0xfbd205c0
mov dword [esp + 0x11c], 0xff32f93d
mov dword [esp + 0x120], 0xf335fd34
mov dword [esp + 0x124], 0xf75cf138
mov word [esp + 0x128], 0xf5f6
lea eax, [esp + 0x128]
mov byte [eax + 0xa], 0
mov dword [eax + 6], 0
mov dword [eax + 2], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0xaa
ja 0x4210fa
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x888]
mov ecx, dword [esp + 0x888]
movzx ecx, byte [esp + ecx + 0x88]
lea edx, [eax - 0x78eaf113]
add eax, 0xed
and eax, ecx
or edx, ecx
sub edx, eax
mov dword [esp + 0xa88], edx
mov eax, dword [esp + 0xa88]
add al, 0x85
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0xab
jb 0x4210a0
lea edi, [esp + 0xf2c]
lea eax, [esp + 0x88]
mov ecx, 0x28
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edx, [esp + 0x128]
mov eax, edx
mov ecx, 1
lea edi, [esp + 0xfcc]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x88], 0xcb73cd19
mov dword [esp + 0x8c], 0xc748c977
mov dword [esp + 0x90], 0xc34dc577
mov dword [esp + 0x94], 0xdf64c173
mov dword [esp + 0x98], 0xdb7edd50
mov dword [esp + 0x9c], 0xd76fd973
mov dword [esp + 0xa0], 0xd36ed566
mov dword [esp + 0xa4], 0xaf25d163
mov dword [esp + 0xa8], 0xab4aad23
mov dword [esp + 0xac], 0xa70aa97a
mov dword [esp + 0xb0], 0xa37da500
mov dword [esp + 0xb4], 0xbf30a12d
mov dword [esp + 0xb8], 0xbb07bd32
mov dword [esp + 0xbc], 0xb73ab90a
mov dword [esp + 0xc0], 0xb30fb51e
mov dword [esp + 0xc4], 0x8f01b13e
mov dword [esp + 0xc8], 0x8b398d35
mov dword [esp + 0xcc], 0x8722893a
mov dword [esp + 0xd0], 0x833b852f
mov dword [esp + 0xd4], 0x9f228132
mov dword [esp + 0xd8], 0x9b119d2f
mov dword [esp + 0xdc], 0x97769917
mov dword [esp + 0xe0], 0x932f9541
mov dword [esp + 0xe4], 0x6fe1911f
mov dword [esp + 0xe8], 0x6bd16dcd
mov dword [esp + 0xec], 0x67d469d1
mov dword [esp + 0xf0], 0x638265df
mov dword [esp + 0xf4], 0x7ff361cf
mov dword [esp + 0xf8], 0x7bf57dc2
mov dword [esp + 0xfc], 0x77f979f1
mov dword [esp + 0x100], 0x73cf75f8
mov dword [esp + 0x104], 0x4fea71c5
mov dword [esp + 0x108], 0x4bc44d9c
mov dword [esp + 0x10c], 0x47fc49fb
mov dword [esp + 0x110], 0x43f645fd
mov dword [esp + 0x114], 0x5fd141fd
mov dword [esp + 0x118], 0x5b895df8
mov dword [esp + 0x11c], 0x57da59d5
mov dword [esp + 0x120], 0x53e155e0
mov dword [esp + 0x124], 0x2f9951e3
mov dword [esp + 0x128], 0x2be32d88
mov dword [esp + 0x12c], 0x27ed29e7
mov dword [esp + 0x130], 0x23fd25e9
mov dword [esp + 0x134], 0x3fe421fa
mov dword [esp + 0x138], 0x3bf63dcc
mov dword [esp + 0x13c], 0x37f939c9
mov dword [esp + 0x140], 0x33c335c5
mov dword [esp + 0x144], 0xfb231c1
mov dword [esp + 0x148], 0xbd40dc3
mov dword [esp + 0x14c], 0x7ce09c0
mov dword [esp + 0x150], 0x3f205c5
mov dword [esp + 0x154], 0x1fef01f0
mov dword [esp + 0x158], 0x1bd61dec
mov dword [esp + 0x15c], 0x17d819c6
mov dword [esp + 0x160], 0x13d815d5
mov dword [esp + 0x164], 0xef2511da
mov dword [esp + 0x168], 0xeb4eed26
mov word [esp + 0x16c], 0xe9e8
mov word [edx + 0x4e], 0
mov dword [edx + 0x4a], 0
mov dword [edx + 0x46], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0xef
ja 0x421443
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x888]
mov ecx, dword [esp + 0x888]
movzx ecx, byte [esp + ecx + 0x88]
mov edx, eax
and edx, 0x163ceca2
xor eax, 0x963ceca2
lea eax, [eax + edx*2]
mov edx, eax
and edx, ecx
add eax, ecx
add edx, edx
sub eax, edx
mov dword [esp + 0xa88], eax
mov eax, dword [esp + 0xa88]
add al, 0x92
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0xf0
jb 0x4213e0
lea edi, [esp + 0xfce]
lea eax, [esp + 0x88]
mov ecx, 0x39
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x16c]
lea edi, [esp + 0x10b2]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x88], 0x3b533979
mov dword [esp + 0x8c], 0x3fae3d5f
mov dword [esp + 0x90], 0x23b521af
mov dword [esp + 0x94], 0x274225b3
mov dword [esp + 0x98], 0x2b5429b2
mov dword [esp + 0x9c], 0x2f4a2d5b
mov dword [esp + 0xa0], 0x533b5148
mov dword [esp + 0xa4], 0x57335537
mov dword [esp + 0xa8], 0x5b0b592a
mov dword [esp + 0xac], 0x5f725d0f
mov dword [esp + 0xb0], 0x433c410e
mov dword [esp + 0xb4], 0x47d34533
mov dword [esp + 0xb8], 0x4b2449d2
mov dword [esp + 0xbc], 0x4fdd4ddb
mov dword [esp + 0xc0], 0x730c7123
mov dword [esp + 0xc4], 0x77e67502
mov dword [esp + 0xc8], 0x7b1e79e7
mov dword [esp + 0xcc], 0x7f107d11
mov dword [esp + 0xd0], 0x63f56119
mov dword [esp + 0xd4], 0x6715651e
mov dword [esp + 0xd8], 0x6bfc69f1
mov dword [esp + 0xdc], 0x6ffd6d06
mov dword [esp + 0xe0], 0x93fd91ff
mov dword [esp + 0xe4], 0x97cf95ee
mov dword [esp + 0xe8], 0x9bc199c3
mov dword [esp + 0xec], 0x9fd99dcd
mov dword [esp + 0xf0], 0x83c681d8
mov dword [esp + 0xf4], 0x87d085d2
mov dword [esp + 0xf8], 0x8bdd89d5
mov dword [esp + 0xfc], 0x8fdf8dd9
mov dword [esp + 0x100], 0xb3d4b1dd
mov dword [esp + 0x104], 0xb7f6b5e7
mov dword [esp + 0x108], 0xbbe0b9ee
mov dword [esp + 0x10c], 0xbfecbdf9
mov dword [esp + 0x110], 0xa3f3a1ee
mov dword [esp + 0x114], 0xa7f0a5f2
mov dword [esp + 0x118], 0xabfaa9e4
mov dword [esp + 0x11c], 0xaffaade9
mov dword [esp + 0x120], 0xd389d1f8
mov dword [esp + 0x124], 0xd7a8d584
mov word [esp + 0x128], 0xd9d6
lea eax, [esp + 0x128]
mov word [eax + 0xe], 0
mov dword [eax + 0xa], 0
mov dword [eax + 6], 0
mov dword [eax + 2], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0xaf
ja 0x4216cc
nop
mov eax, dword [esp + 0x888]
mov ecx, dword [esp + 0x888]
movzx ecx, byte [esp + ecx + 0x88]
lea edx, [eax + 0xa7]
add eax, ecx
and edx, ecx
add edx, edx
sub eax, edx
add eax, 0x19ed41a7
mov dword [esp + 0xa88], eax
mov eax, dword [esp + 0xa88]
add al, 0x6f
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0xb0
jb 0x421670
lea edi, [esp + 0xe8a]
lea eax, [esp + 0x88]
mov ecx, 0x28
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x128]
mov ecx, 1
lea edi, [esp + 0xf2a]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x88], 0x33a33545
mov dword [esp + 0x8c], 0x2fbe31af
mov dword [esp + 0x90], 0x2ba12dbf
mov dword [esp + 0x94], 0x27b229bb
mov dword [esp + 0x98], 0x234025aa
mov dword [esp + 0x9c], 0x5fba2153
mov dword [esp + 0xa0], 0x5bcb5dc4
mov dword [esp + 0xa4], 0x57c359c7
mov dword [esp + 0xa8], 0x531b5532
mov dword [esp + 0xac], 0x4f02511e
mov dword [esp + 0xb0], 0x4b284d1e
mov dword [esp + 0xb4], 0x47c3493b
mov dword [esp + 0xb8], 0x43d045ca
mov dword [esp + 0xbc], 0x7fd141d3
mov dword [esp + 0xc0], 0x7b187deb
mov dword [esp + 0xc4], 0x77f6790a
mov dword [esp + 0xc8], 0x73ee75e7
mov dword [esp + 0xcc], 0x6fe471e5
mov dword [esp + 0xd0], 0x6be16df5
mov dword [esp + 0xd4], 0x6719690e
mov dword [esp + 0xd8], 0x63e865ed
mov dword [esp + 0xdc], 0x9ff161f6
mov dword [esp + 0xe0], 0x9b099d0f
mov dword [esp + 0xe4], 0x97df99fe
mov dword [esp + 0xe8], 0x93dd95db
mov dword [esp + 0xec], 0x8fed91d9
mov dword [esp + 0xf0], 0x8bf68df4
mov dword [esp + 0xf4], 0x87c489da
mov dword [esp + 0xf8], 0x83c985c9
mov dword [esp + 0xfc], 0xbfcf81cd
mov dword [esp + 0x100], 0xbb20bdf1
mov dword [esp + 0x104], 0xb7c6b9f7
mov dword [esp + 0x108], 0xb3fcb5fe
mov dword [esp + 0x10c], 0xafe0b1cd
mov dword [esp + 0x110], 0xabe3adfe
mov dword [esp + 0x114], 0xa7e4a9fa
mov dword [esp + 0x118], 0xa3eaa5d8
mov dword [esp + 0x11c], 0xdfeaa1dd
mov dword [esp + 0x120], 0xdb95dd94
mov dword [esp + 0x124], 0xd7bcd990
mov word [esp + 0x128], 0xd5d6
mov dword [esp + 0x12e], 0
mov dword [esp + 0x12a], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0xa9
ja 0x421952
nop
nop
nop
nop
mov eax, dword [esp + 0x888]
mov ecx, dword [esp + 0x888]
movzx ecx, byte [esp + ecx + 0x88]
mov edx, eax
and edx, 0xf73ff829
xor eax, 0x773ff829
lea eax, [eax + edx*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0xa88], edx
mov eax, dword [esp + 0xa88]
add al, 0xe1
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0xaa
jb 0x4218f0
lea edx, [esp + 0x1156]
lea eax, [esp + 0x88]
mov edi, edx
mov ecx, 0x28
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x128]
mov ecx, 1
lea edi, [esp + 0x11f6]
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x88], 0x137b1161
mov dword [esp + 0x8c], 0x1f8e1d7f
mov dword [esp + 0x90], 0x1b85198f
mov dword [esp + 0x94], 0x76a058b
mov dword [esp + 0x98], 0x364019a
mov dword [esp + 0x9c], 0xf620d73
mov dword [esp + 0xa0], 0xb630960
mov dword [esp + 0xa4], 0x375b3567
mov dword [esp + 0xa8], 0x33633152
mov dword [esp + 0xac], 0x3f6a3d6d
mov dword [esp + 0xb0], 0x3b5c396e
mov dword [esp + 0xb4], 0x27bb254b
mov dword [esp + 0xb8], 0x23b421ba
mov dword [esp + 0xbc], 0x2fbd2db3
mov dword [esp + 0xc0], 0x2b4c29bb
mov dword [esp + 0xc4], 0x57c6555a
mov dword [esp + 0xc8], 0x533e51c7
mov dword [esp + 0xcc], 0x5fc85d39
mov dword [esp + 0xd0], 0x5bc55931
mov dword [esp + 0xd4], 0x4735453e
mov dword [esp + 0xd8], 0x43dc41d9
mov dword [esp + 0xdc], 0x4fdd4dd6
mov dword [esp + 0xe0], 0x4bdd49df
mov dword [esp + 0xe4], 0x772f752e
mov dword [esp + 0xe8], 0x7329712b
mov dword [esp + 0xec], 0x7f317d2d
mov dword [esp + 0xf0], 0x7b367930
mov dword [esp + 0xf4], 0x6738652a
mov dword [esp + 0xf8], 0x633d6135
mov dword [esp + 0xfc], 0x6f3f6d31
mov dword [esp + 0x100], 0x6b04693d
mov dword [esp + 0x104], 0x97d69537
mov dword [esp + 0x108], 0x93c891ce
mov dword [esp + 0x10c], 0x9fcc9dd1
mov dword [esp + 0x110], 0x9bcb99ce
mov dword [esp + 0x114], 0x87d885ca
mov dword [esp + 0x118], 0x83d281c4
mov dword [esp + 0x11c], 0x8fd28dc1
mov dword [esp + 0x120], 0x8bd189d0
mov dword [esp + 0x124], 0xb7d0b5d4
mov word [esp + 0x128], 0xb1b6
lea eax, [esp + 0x128]
mov dword [eax + 5], 0
mov dword [eax + 2], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0xa8
ja 0x421bda
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x888]
mov ecx, dword [esp + 0x888]
movzx ecx, byte [esp + ecx + 0x88]
lea edi, [eax - 0x183c0a7d]
add eax, 0x83
and eax, ecx
or edi, ecx
sub edi, eax
mov dword [esp + 0xa88], edi
mov eax, dword [esp + 0xa88]
add al, 0x6b
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0xa9
jb 0x421b80
lea eax, [esp + 0x10b4]
lea ebx, [esp + 0x88]
mov ecx, 0x28
mov edi, eax
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea ebx, [esp + 0x128]
mov ecx, 1
lea edi, [esp + 0x1154]
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
lea ecx, [esp + 0xf2c]
mov dword [esp + 0x74], ecx
lea ecx, [esp + 0xfce]
mov dword [esp + 0x78], ecx
lea ecx, [esp + 0xe8a]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], eax
xor ecx, ecx
mov eax, dword [case.0x420dc3.20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
xor eax, eax
cmp ecx, 5
setne al
jmp dword [eax*4 + 0x444f34]
mov edi, esi
mov dword [esp + 0x68], ecx
mov eax, dword [esp + ecx*4 + 0x74]
mov dword [esp + 0x88], 0xc332c130
mov dword [esp + 0x8c], 0xc736c534
mov dword [esp + 0x90], 0xcb3ac938
mov dword [esp + 0x94], 0xcf16cd3c
mov word [esp + 0x98], 0xd1d0
lea ecx, [esp + 0x128]
mov word [ecx - 0x82], 0
mov dword [ecx - 0x86], 0
mov dword [ecx - 0x8a], 0
mov dword [ecx - 0x8e], 0
mov dword [esp + 0x888], 0
mov ecx, dword [esp + 0x888]
cmp ecx, 0x1f
ja 0x421d4d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x888]
mov edx, dword [esp + 0x888]
movzx edx, byte [esp + edx + 0x88]
lea esi, [ecx + edx]
add esi, 0xf162a720
add ecx, 0xf162a720
and ecx, edx
add ecx, ecx
sub esi, ecx
mov dword [esp + 0xa88], esi
mov ecx, dword [esp + 0xa88]
add cl, 0x20
mov edx, dword [esp + 0x888]
mov byte [esp + edx + 0x88], cl
inc dword [esp + 0x888]
mov ecx, dword [esp + 0x888]
cmp ecx, 0x20
jb 0x421cf0
movzx ecx, word [eax]
lea edx, [esp + 0x888]
test cx, cx
je 0x421d81
add eax, 2
lea edx, [esp + 0x888]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [eax]
add eax, 2
test cx, cx
jne 0x421d70
mov word [edx], 0
movzx eax, word [esp + 0x88]
test ax, ax
mov esi, edi
je 0x421db1
lea ecx, [esp + 0x8a]
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x421da0
mov word [edx], 0
mov cx, 0x31
xor eax, eax
cmp cx, 0x35
setb al
mov dword [esp + 0x24], edx
jmp dword [eax*4 + 0x444f3c]
mov ecx, dword [esp + 0xc]
inc ecx
xor eax, eax
cmp cx, 0x35
setb al
mov edx, dword [esp + 0x24]
jmp dword [eax*4 + 0x444f3c]
mov dword [esp + 0xc], ecx
mov word [edx - 2], cx
lea eax, [esp + 0x58]
lea ecx, [esp + 0x888]
push dword [esp + 0x5c]
push 0
push 0x20019
push eax
push ecx
call fcn.0043da70
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x444f54]
mov dword [esp + 0x6c], 0x800
mov dword [esp + 0x28], 0x400
xor ecx, ecx
mov dword [esp + 8], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0xa8c]
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0x98]
push eax
mov dword [esp + 0x28], ecx
push ecx
push dword [esp + 0x70]
call fcn.0043e210
add esp, 0x1c
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x444f5c]
mov eax, dword [esp + 8]
and al, 1
movzx ecx, al
xor eax, eax
jmp dword [ecx*4 + 0x444f64]
xor ecx, ecx
cmp dword [esp + 0x54], 1
sete cl
xor eax, eax
jmp dword [ecx*4 + 0x444f6c]
movzx eax, al
jmp dword [eax*4 + 0x444f74]
mov eax, dword [esp + 0x54]
xor ecx, ecx
cmp eax, 3
sete cl
mov edx, dword [esp + 4]
jmp dword [ecx*4 + 0x444f7c]
xor eax, eax
movzx eax, al
jmp dword [eax*4 + 0x444f84]
mov dword [esp + 0x30], 0xcb75cd0d
mov dword [esp + 0x34], 0xc775c977
mov dword [esp + 0x38], 0xc370c549
mov dword [esp + 0x3c], 0xdfdec14c
mov dword [esp + 0x40], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x13
ja 0x421f56
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax + ecx]
add edx, 0xdde18f22
add eax, 0xdde18f22
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x18]
mov ecx, eax
xor ecx, 0x11
and eax, 0x11
lea eax, [ecx + eax*2]
inc al
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x14
jb 0x421f10
movzx edi, word [esp + 0x30]
lea eax, [esp + 0x88]
test di, di
je 0x4220a0
lea eax, [esp + 0x88]
mov ecx, eax
lea edx, [esp + 0x30]
jmp 0x421f95
add eax, 2
lea edx, [esp + 0x30]
mov ecx, eax
movzx edi, word [edx]
test di, di
je 0x4220a0
movzx ebx, word [ecx]
test bx, bx
je 0x42209e
cmp bx, di
jne 0x421f80
add ecx, 2
add edx, 2
jmp 0x421f89
mov dword [esp + 0x30], 0xab03a576
mov dword [esp + 0x34], 0xaf1da91f
mov dword [esp + 0x38], 0xb31dad17
mov dword [esp + 0x3c], 0xb714b104
mov word [esp + 0x40], 0xb5b6
lea eax, [esp + 0x42]
mov dword [eax + 3], 0
mov dword [eax], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x18
ja 0x422045
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x30]
lea edx, [eax + ecx]
add edx, 0xef0960c5
add eax, 0xc5
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
add al, 0x9d
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x19
jb 0x422000
movzx edi, word [esp + 0x30]
lea eax, [esp + 0x88]
test di, di
je 0x42219c
lea eax, [esp + 0x88]
mov ecx, eax
lea edx, [esp + 0x30]
jmp 0x422085
add eax, 2
lea edx, [esp + 0x30]
mov ecx, eax
movzx edi, word [edx]
test di, di
je 0x42219c
movzx ebx, word [ecx]
test bx, bx
je 0x42219a
cmp bx, di
jne 0x422070
add ecx, 2
add edx, 2
jmp 0x422079
xor eax, eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x444f74]
mov eax, dword [esp + 0x28]
cmp eax, 2
mov edx, dword [esp + 4]
jb 0x422186
shr eax, 1
lea edi, [eax - 1]
mov ebx, eax
and ebx, 3
je 0x422116
mov dword [esp + 0x10], eax
mov dword [esp + 8], edi
xor edx, edx
lea ecx, [esp + 0xa88]
nop
nop
nop
nop
mov edi, esi
movzx esi, word [ecx]
mov eax, ebx
xor ebx, ebx
test si, si
setne bl
lea ecx, [ecx + ebx*2]
mov ebx, eax
mov word [edi], si
mov esi, edi
add esi, 2
inc edx
cmp eax, edx
jne 0x4220e0
mov eax, dword [esp + 0x10]
sub eax, edx
mov edx, dword [esp + 4]
mov edi, dword [esp + 8]
cmp edi, 3
jae 0x422130
jmp 0x422186
lea ecx, [esp + 0xa88]
cmp edi, 3
jb 0x422186
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [ecx]
xor ebx, ebx
test dx, dx
setne bl
mov word [esi], dx
lea edx, [ecx + ebx*2]
movzx ecx, word [ecx + ebx*2]
xor ebx, ebx
test cx, cx
setne bl
mov word [esi + 2], cx
lea ecx, [edx + ebx*2]
movzx edx, word [edx + ebx*2]
xor ebx, ebx
test dx, dx
setne bl
mov word [esi + 4], dx
lea edx, [ecx + ebx*2]
movzx edi, word [ecx + ebx*2]
xor ecx, ecx
test di, di
setne cl
lea ecx, [edx + ecx*2]
mov word [esi + 6], di
add esi, 8
add eax, 0xfffffffc
jne 0x422130
mov edx, dword [esp + 4]
mov dword [esi], 0x20003a
add esi, 4
mov al, 1
mov dword [esp + 8], eax
jmp case.0x4223ad.26
xor eax, eax
xor ecx, ecx
test eax, eax
setne cl
mov edx, dword [esp + 4]
jmp dword [ecx*4 + 0x444f84]
mov eax, dword [esp + 0x28]
cmp eax, 2
jb 0x422272
mov edx, esi
shr eax, 1
lea esi, [eax - 1]
mov ebx, eax
and ebx, 3
je 0x422209
mov dword [esp + 0x10], eax
mov dword [esp + 4], esi
xor edi, edi
lea ecx, [esp + 0xa88]
nop
nop
nop
nop
nop
nop
movzx esi, word [ecx]
mov eax, ebx
xor ebx, ebx
test si, si
setne bl
lea ecx, [ecx + ebx*2]
mov ebx, eax
mov word [edx], si
add edx, 2
inc edi
cmp eax, edi
jne 0x4221e0
mov eax, dword [esp + 0x10]
sub eax, edi
mov esi, dword [esp + 4]
jmp 0x422210
lea ecx, [esp + 0xa88]
cmp esi, 3
mov esi, edx
jb 0x422272
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, word [ecx]
xor ebx, ebx
test dx, dx
setne bl
mov word [esi], dx
lea edx, [ecx + ebx*2]
movzx ecx, word [ecx + ebx*2]
xor ebx, ebx
test cx, cx
setne bl
mov word [esi + 2], cx
lea ecx, [edx + ebx*2]
movzx edx, word [edx + ebx*2]
xor ebx, ebx
test dx, dx
setne bl
mov word [esi + 4], dx
lea edx, [ecx + ebx*2]
movzx edi, word [ecx + ebx*2]
xor ecx, ecx
test di, di
setne cl
lea ecx, [edx + ecx*2]
mov word [esi + 6], di
add esi, 8
add eax, 0xfffffffc
jne 0x422220
mov word [esi], 0xa
add esi, 2
mov eax, dword [case.0x4223ad.18]
nop
mov dl, 1
jmp eax
mov eax, dword [case.0x4223ad.26]
nop
nop
nop
nop
nop
nop
nop
jmp eax
mov eax, dword [case.0x4223ad.30]
mov ecx, dword [esp + 0x14]
nop
nop
nop
nop
nop
jmp eax
mov dword [esp + 4], edx
inc ecx
jmp 0x421e40
mov ebx, dword [esp + 0x58]
mov dword [esp + 0x30], 0x82858487
lea eax, [esp + 0x42]
mov dword [eax - 6], 0
mov dword [eax - 0xa], 0
mov dword [eax - 0xe], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xf
ja 0x422336
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov eax, dword [esp]
movzx eax, byte [esp + eax + 0x30]
lea edx, [ecx + eax]
add edx, 0x2c7950c1
add ecx, 0x2c7950c1
and ecx, eax
add ecx, ecx
mov eax, ecx
xor eax, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
add al, 0xb9
mov ecx, dword [esp]
mov byte [esp + ecx + 0x30], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x10
jb 0x4222f0
mov ecx, dword [0x449d18]
test ecx, ecx
je 0x422370
mov edx, dword [esp + 0x30]
xor edi, edi
mov eax, dword [0x449d1c]
nop
nop
nop
nop
nop
cmp dword [eax + edi*8], 0x11081610
je 0x422360
inc edi
cmp ecx, edi
jne 0x422350
jmp 0x422370
mov eax, dword [eax + edi*8 + 4]
cmp eax, edx
jne case.default.0x422382
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
inc ecx
xor eax, eax
cmp cx, 0x35
setb al
mov edx, dword [esp + 0x24]
jmp dword [eax*4 + 0x444f3c]
push ebx
push 1
push dword [0x449d20]
push eax
call fcn.0043ab10
add esp, 0x10
mov ecx, dword [esp + 0xc]
inc ecx
xor eax, eax
cmp cx, 0x35
setb al
mov edx, dword [esp + 0x24]
jmp dword [eax*4 + 0x444f3c]
jmp dword [0x444f50]
mov ecx, dword [esp + 0x68]
inc ecx
jmp 0x421c40
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x88], 0x82858487
lea eax, [esp + 0x128]
mov dword [eax - 0x94], 0
mov dword [eax - 0x98], 0
mov dword [eax - 0x9c], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0xf
ja 0x422486
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x888]
mov eax, dword [esp + 0x888]
movzx eax, byte [esp + eax + 0x88]
lea edx, [ecx + eax]
add edx, 0x2c7950c1
add ecx, 0x2c7950c1
and ecx, eax
add ecx, ecx
mov eax, ecx
xor eax, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, eax
mov dword [esp + 0xa88], ecx
mov eax, dword [esp + 0xa88]
add al, 0xb9
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0x10
jb 0x422420
mov ecx, dword [0x449d18]
test ecx, ecx
je 0x4224d0
mov edx, dword [esp + 0x88]
xor edi, edi
mov eax, dword [0x449d1c]
nop
nop
cmp dword [eax + edi*8], 0x11081610
je 0x4224b0
inc edi
cmp ecx, edi
jne 0x4224a0
jmp 0x4224d0
mov eax, dword [eax + edi*8 + 4]
cmp eax, edx
je 0x4224d0
push ebx
push 1
push dword [0x449d20]
push eax
call fcn.0043ab10
add esp, 0x10
nop
nop
nop
nop
nop
nop
xor eax, eax
mov ecx, 1
mov edi, dword [esp + 0x64]
jmp dword [0x444fbc]
push edi
call fcn.00409280
add esp, 4
xor eax, eax
mov ecx, 1
jmp dword [ecx*4 + 0x444fc4]
mov edx, dword [esp + 4]
jmp dword [eax*4 + 0x444fcc]
jmp dword [0x445034]
mov ecx, edi
and cl, 1
mov eax, dword [case.0x420dc3.1]
jmp eax
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor edx, edx
xor eax, eax
cmp edx, dword [esp + 0x2c]
setb al
mov dword [esp + 0x20], 0
jmp dword [eax*4 + 0x444efc]
mov word [esi], 0
mov edi, edx
mov eax, edx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x444fdc]
mov dword [esp + 4], esi
jmp dword [0x444fe4]
mov edi, eax
jmp dword [0x444ff4]
jmp dword [0x444ffc]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x444ef4]
xor ecx, ecx
jmp 0x42251b
jmp dword [0x445014]
movzx ecx, word [esp + 0x11f8]
xor ebx, ebx
test cx, cx
je 0x4225ea
xor ebx, ebx
lea eax, [esp + 0x11f8]
jmp 0x4225c2
add ebx, edi
movzx ecx, word [eax + 2]
add eax, 2
test cx, cx
mov esi, dword [esp + 4]
je 0x4225ea
cmp eax, esi
jae 0x4225ea
movzx esi, cx
xor ecx, ecx
cmp esi, 0x800
setb dl
mov edi, 1
cmp esi, 0x80
jb 0x4225b0
mov cl, dl
xor ecx, 3
mov edi, ecx
jmp 0x4225b0
mov eax, ebx
and eax, 1
mov ecx, ebx
xor ecx, 1
lea eax, [ecx + eax*2]
push eax
call fcn.00409270
add esp, 4
mov ecx, ebx
mov dword [esp + 0xc], eax
mov ebx, eax
mov dword [esp + 0x10], ecx
test ecx, ecx
jle 0x4226d7
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
lea ecx, [eax + ebx]
inc ecx
mov dword [esp + 8], ecx
mov ecx, ebx
add ecx, eax
mov dword [esp + 0x14], ecx
lea edi, [esp + 0x11f8]
jmp 0x422656
mov byte [ebx], cl
mov edx, 1
add edi, 2
add ebx, edx
cmp ebx, dword [esp + 0x14]
jae 0x4226d7
cmp edi, esi
jae 0x4226d7
movzx ecx, word [edi]
test cx, cx
je 0x4226d7
cmp cx, 0x7f
jbe 0x422640
mov eax, ebx
not eax
add eax, dword [esp + 8]
cmp eax, 2
jb 0x4226a0
movzx edx, cx
cmp edx, 0x7ff
ja 0x4226a0
mov eax, ecx
shr eax, 6
add al, 0xc0
mov byte [ebx], al
and cl, 0x3f
or cl, 0x80
mov byte [ebx + 1], cl
mov edx, 2
jmp 0x422647
xor edx, edx
cmp eax, 3
jb 0x422647
movzx edx, cx
mov eax, edx
shr eax, 0xc
or al, 0xe0
mov byte [ebx], al
shr edx, 6
mov eax, edx
not eax
or eax, 0x3f
add eax, edx
add al, 0x81
mov byte [ebx + 1], al
and cl, 0x3f
or cl, 0x80
mov byte [ebx + 2], cl
mov edx, 3
jmp 0x422647
mov byte [ebx], 0
mov dword [esp + 0x88], 0xc7c8c9a5
mov dword [esp + 0x8c], 0xcbdfd8c1
mov dword [esp + 0x90], 0xc6cec0c5
mov dword [esp + 0x94], 0xc3c3a483
mov dword [esp + 0x98], 0xf6f9f8ca
mov dword [esp + 0x9c], 0xfefe9dbb
mov dword [esp + 0xa0], 0xe4fcfae8
mov dword [esp + 0xa4], 0xcff0bbf7
mov word [esp + 0xa8], 0x59f2
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb1], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0x2c
ja 0x4227f9
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x888]
mov eax, dword [esp + 0x888]
movzx esi, byte [esp + eax + 0x88]
lea eax, [edx + 0xb18e50f]
mov ecx, eax
and ecx, esi
xor eax, esi
mov edi, 0xf4e71af0
sub edi, edx
or edi, esi
add edi, edx
add edi, ecx
sub eax, edi
lea eax, [eax + ecx*2]
add eax, 0xf4e71af0
mov dword [esp + 0xa88], eax
mov eax, dword [esp + 0xa88]
mov ecx, eax
or ecx, 0x96
and eax, 0x96
add eax, ecx
inc al
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0x2d
jb 0x422780
lea eax, [esp + 0x88]
mov ecx, dword [ebp + 8]
push dword [esp + 0x10]
mov ebx, dword [esp + 0x10]
push ebx
push eax
call fcn.00409cd0
mov esi, dword [esp + 4]
jmp dword [0x444ff0]
movzx ecx, word [esp + 0x11f8]
xor edi, edi
test cx, cx
je 0x422968
lea eax, [esp + 0x11f8]
jmp 0x422852
add edi, ebx
movzx ecx, word [eax + 2]
add eax, 2
test cx, cx
mov esi, dword [esp + 4]
je 0x42287a
cmp eax, esi
jae 0x42287a
movzx esi, cx
xor ecx, ecx
cmp esi, 0x800
setb dl
mov ebx, 1
cmp esi, 0x80
jb 0x422840
mov cl, dl
xor ecx, 3
mov ebx, ecx
jmp 0x422840
lea ebx, [edi + 1]
push ebx
call fcn.00409270
add esp, 4
test edi, edi
mov dword [esp + 0xc], eax
jle 0x422976
lea ecx, [eax + edi]
mov dword [esp + 0x14], ecx
add ebx, eax
mov dword [esp + 0x10], ebx
lea ebx, [esp + 0x11f8]
jmp 0x4228c6
mov byte [eax], dl
mov ecx, 1
add ebx, 2
add eax, ecx
cmp eax, dword [esp + 0x14]
jae 0x422976
cmp ebx, esi
jae 0x422976
movzx edx, word [ebx]
test dx, dx
je 0x422976
cmp dx, 0x7f
jbe 0x4228b0
mov ecx, eax
not ecx
add ecx, dword [esp + 0x10]
cmp ecx, 2
jb 0x422920
movzx esi, dx
cmp esi, 0x7ff
mov esi, dword [esp + 4]
ja 0x422920
mov ecx, edx
shr ecx, 6
add cl, 0xc0
mov byte [eax], cl
and dl, 0x3f
or dl, 0x80
mov byte [eax + 1], dl
mov ecx, 2
jmp 0x4228b7
cmp ecx, 3
mov ecx, 0
jb 0x4228b7
movzx ecx, dx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
shr ecx, 0xc
or cl, 0xe0
mov byte [eax], cl
shr dword [esp + 8], 6
mov ecx, dword [esp + 8]
not ecx
or ecx, 0x3f
add ecx, dword [esp + 8]
add cl, 0x81
mov byte [eax + 1], cl
and dl, 0x3f
or dl, 0x80
mov byte [eax + 2], dl
mov ecx, 3
jmp 0x4228b7
push 1
call fcn.00409270
add esp, 4
mov dword [esp + 0xc], eax
mov byte [eax], 0
mov dword [esp + 0x88], 0xc7c8c9a5
mov dword [esp + 0x8c], 0xcbdfd8c1
mov dword [esp + 0x90], 0xc6cec0c5
mov dword [esp + 0x94], 0xc3c3a483
mov dword [esp + 0x98], 0xf6f9f8ca
mov dword [esp + 0x9c], 0xfefe9dbb
mov dword [esp + 0xa0], 0xe4fcfae8
mov dword [esp + 0xa4], 0xcff0bbf7
mov word [esp + 0xa8], 0x59f2
mov dword [esp + 0xaa], 0
mov dword [esp + 0xae], 0
mov dword [esp + 0xb1], 0
mov dword [esp + 0x888], 0
mov eax, dword [esp + 0x888]
cmp eax, 0x2c
ja 0x422a99
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x888]
mov eax, dword [esp + 0x888]
movzx esi, byte [esp + eax + 0x88]
lea eax, [edx + 0xb18e50f]
mov ecx, eax
and ecx, esi
xor eax, esi
mov ebx, 0xf4e71af0
sub ebx, edx
or ebx, esi
add ebx, edx
add ebx, ecx
sub eax, ebx
lea eax, [eax + ecx*2]
add eax, 0xf4e71af0
mov dword [esp + 0xa88], eax
mov eax, dword [esp + 0xa88]
mov ecx, eax
or ecx, 0x96
and eax, 0x96
add eax, ecx
inc al
mov ecx, dword [esp + 0x888]
mov byte [esp + ecx + 0x88], al
inc dword [esp + 0x888]
mov eax, dword [esp + 0x888]
cmp eax, 0x2d
jb 0x422a20
lea eax, [esp + 0x88]
mov ecx, dword [ebp + 8]
push edi
push dword [esp + 0x10]
push eax
call fcn.00409cd0
mov esi, dword [esp + 4]
jmp case.0x4223ad.42
push ebx
call fcn.00409280
add esp, 4
push ebx
call fcn.00409280
add esp, 4
jmp dword [0x445004]
lea eax, [esp + 0x60]
lea ecx, [esp + 0x2c]
push 0
push 0
push 0
push 0
push eax
push ecx
push 0
push 0
push dword [esp + 0x3c]
call fcn.0043dec0
add esp, 0x24
lea eax, [esp + 0x60]
lea ecx, [esp + 0x2c]
push 0
push 0
push 0
push 0
push eax
push ecx
push 0
push 0
push dword [esp + 0x3c]
call fcn.0043dec0
add esp, 0x24
jmp dword [0x444eec]