Function at 0x4228d8
Capabilities:
Contain obfuscated stackstrings
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x98
mov dword [esp + 0x1c], 0xa3e3a185
mov dword [esp + 0x20], 0xa7d6a5d4
mov dword [esp + 0x24], 0xabcba9ec
mov dword [esp + 0x28], 0xafcfadd8
mov dword [esp + 0x2c], 0xb3eeb195
mov dword [esp + 0x30], 0xb7deb5e0
mov dword [esp + 0x34], 0xbbd4b9cd
mov dword [esp + 0x38], 0xbfdbbdd8
mov dword [esp + 0x3c], 0xc3a0c1b2
mov dword [esp + 0x40], 0xc7b4c5ad
mov dword [esp + 0x44], 0xcb96c9ac
mov dword [esp + 0x48], 0xcfbccd9c
mov dword [esp + 0x4c], 0xd3b4d1bf
mov dword [esp + 0x50], 0xd7bad5bd
mov dword [esp + 0x54], 0xdba9d9bd
lea ebp, [esp + 0x58]
mov word [esp + 0x58], 0xdddc
mov esi, 0xa0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + esi - 0x84]
mov ebx, edx
and ebx, esi
mov eax, ebx
or al, 0xfd
inc al
mov ecx, ebx
and cl, 0xfd
mul cl
mov ecx, eax
add cl, dl
mov eax, ebx
shr al, 1
and al, 1
or bl, 2
mul bl
add al, al
sub cl, al
movzx eax, cl
add eax, esi
mov byte [esp + esi - 0x84], al
inc esi
cmp esi, 0xde
jne case.default.0x421357
lea esi, [esp + 0x5a]
lea eax, [esp + 0x1c]
mov edi, esi
mov ecx, 0xf
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [esp + 0x96]
mov ecx, 1
xchg esi, ebp
rep movsw word es:[edi], word [esi]
xchg esi, ebp
lea edi, [esp + 0x18]
push edi
push 0
push 0
push 0x1e
push esi
push 0
call dword [0x444ab4]
xor ecx, ecx
cmp eax, 0xc0000023
setne cl
xor ebx, ebx
jmp dword [ecx*4 + 0x43f6a4]
mov ebx, dword [esp + 0x18]
test ebx, ebx
jns 0x42136d
mov eax, 0xffffffff
jmp 0x421370
lea eax, [ebx + ebx]
push eax
call fcn.004082c0
add esp, 4
mov ebp, eax
push edi
push ebx
push eax
push 0x1e
push esi
push 0
call dword [0x444ab4]
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x43f6ac]
xor ebx, ebx
jmp dword [0x43f6b4]
mov dword [esp], 0x44bb4295
mov dword [esp + 4], 0x58b946b0
mov dword [esp + 8], 0x5cbe5abd
mov dword [esp + 0xc], 0x50bd5eaf
mov dword [esp + 0x10], 0x54a152a8
mov dword [esp + 0x14], 0x685756b1
xor eax, eax
xor ecx, ecx
mov esi, ecx
xor esi, 0xf7
mov edx, eax
and edx, 0x10
sub edx, esi
xor dl, byte [esp + ecx]
add dl, 0xb8
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 0x18
jne 0x4213d0
mov eax, esp
mov edx, eax
lea esi, [esp + 0x1c]
mov edi, esi
mov ecx, 6
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x34]
lea edx, [esp + 0x18]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0
mov byte [esp + 0x10], 1
mov dword [esp], esi
mov dword [esp + 8], ebp
push 0
push 0
push eax
push dword [esp + 0xb8]
call fcn.0041cee0
add esp, 0x10
mov ebx, eax
jmp dword [0x43f6b4]
push ebp
call fcn.004082d0
add esp, 4
mov eax, dword [case.0x421357.8]
nop
nop
nop
jmp eax
mov eax, ebx
add esp, 0x98
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x24]
push 0
push 0
push 0
push 0
push eax
push ecx
push 0
push 0
push dword [esp + 0x48]
call fcn.00439470
add esp, 0x24
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x43f6d4]
xor eax, eax
jmp 0x422b62
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x2c], 0
cmp ecx, dword [esp + 0x24]
setb al
xor edi, edi
jmp dword [eax*4 + 0x43f6dc]
inc edi
xor eax, eax
cmp edi, dword [esp + 0x24]
setb al
jmp dword [eax*4 + 0x43f6dc]
mov esi, dword [esp + 0x5c]
mov eax, esi
inc eax
lea eax, [esi + esi + 2]
jns 0x4215e3
mov eax, 0xffffffff
push eax
call fcn.004082c0
add esp, 4
mov dword [esp + 0x58], esi
mov esi, eax
lea eax, [esp + 0x58]
push eax
push esi
push edi
push dword [esp + 0x34]
call fcn.00439280
add esp, 0x10
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x43f6ec]
lea eax, [esp + 0x38]
push dword [esp + 0x28]
push 0
push 0x20019
push eax
push esi
call fcn.004391a0
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x43f6f4]
mov eax, dword [case.0x421357.17]
jmp case.0x421357.45
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], edi
mov dword [esp + 0x76], 0x9b739955
mov dword [esp + 0x7a], 0x9f6c9d7f
mov dword [esp + 0x7e], 0xa351a14f
mov dword [esp + 0x82], 0xa740a54b
mov dword [esp + 0x86], 0xab76a95c
mov dword [esp + 0x8a], 0xaf47ad7b
mov dword [esp + 0x8e], 0xb356b15e
mov dword [esp + 0x92], 0xb741b55b
mov dword [esp + 0x96], 0xbb9ab94b
mov dword [esp + 0x9a], 0xbf5bbd71
mov dword [esp + 0x9e], 0x43b141b3
mov dword [esp + 0xa2], 0x47a145a5
mov dword [esp + 0xa6], 0x4ba449a1
mov dword [esp + 0xaa], 0x4f6e4dab
mov dword [esp + 0xae], 0x53a75183
mov dword [esp + 0xb2], 0x57a555b6
mov dword [esp + 0xb6], 0x5ba959a1
mov dword [esp + 0xba], 0x5fbb5da8
mov dword [esp + 0xbe], 0x63be618d
mov dword [esp + 0xc2], 0x679465b4
mov dword [esp + 0xc6], 0x6b8c6987
mov dword [esp + 0xca], 0x6f826d85
mov dword [esp + 0xce], 0x73817195
mov dword [esp + 0xd2], 0x774f75a8
mov dword [esp + 0xd6], 0x7b4d794b
mov dword [esp + 0xda], 0x7fbd7d49
mov dword [esp + 0xde], 0x3c401c6
mov dword [esp + 0xe2], 0x7320534
mov dword [esp + 0xe6], 0xb390939
mov dword [esp + 0xea], 0xf3f0d3d
mov dword [esp + 0xee], 0x13f61121
mov dword [esp + 0xf2], 0x17d41527
mov dword [esp + 0xf6], 0x1b221920
mov dword [esp + 0xfa], 0x1f2e1ddd
mov dword [esp + 0xfe], 0x23132110
mov dword [esp + 0x102], 0x27122514
mov dword [esp + 0x106], 0x2b1829ea
mov dword [esp + 0x10a], 0x2f182ded
mov dword [esp + 0x10e], 0x33053106
mov dword [esp + 0x112], 0x37ea3502
mov word [esp + 0x116], 0x3938
mov eax, 0xd4f8db58
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x2b07251e]
mov edx, eax
or edx, ecx
mov esi, ecx
not esi
or esi, eax
add ecx, esi
inc ecx
mov esi, edx
not esi
and esi, ecx
not ecx
and ecx, edx
sub ecx, esi
mov edx, ecx
xor edx, 0x40
mov esi, ecx
or esi, 0x3f
and esi, edx
lea edx, [ecx + ecx]
and edx, 0x7e
sub ecx, edx
lea ecx, [ecx + esi*2]
add cl, 0x40
mov byte [esp + eax + 0x2b07251e], cl
inc eax
cmp eax, 0xd4f8dbfa
jne 0x421810
lea edi, [esp + 0x918]
lea eax, [esp + 0x76]
mov ecx, 0x28
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x116]
lea edi, [esp + 0x9b8]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x76], 0xde44dca6
mov dword [esp + 0x7a], 0xd243d0bc
mov dword [esp + 0x7e], 0xd646d44c
mov dword [esp + 0x82], 0xcaafc848
mov dword [esp + 0x86], 0xcea1cc5f
mov dword [esp + 0x8a], 0xc258c0b8
mov dword [esp + 0x8e], 0xc6a1c45d
mov dword [esp + 0x92], 0xfa6ef858
mov dword [esp + 0x96], 0xfeddfc68
mov dword [esp + 0x9a], 0xf285f081
mov dword [esp + 0x9e], 0xf6b6f49f
mov dword [esp + 0xa2], 0xea7be862
mov dword [esp + 0xa6], 0xee88ec79
mov dword [esp + 0xaa], 0xe275e071
mov dword [esp + 0xae], 0xe680e495
mov dword [esp + 0xb2], 0x1a8a1875
mov dword [esp + 0xb6], 0x1e821c82
mov dword [esp + 0xba], 0x127d1081
mov dword [esp + 0xbe], 0x168c1464
mov dword [esp + 0xc2], 0xa6d0889
mov dword [esp + 0xc6], 0xe9a0c94
mov dword [esp + 0xca], 0x221009c
mov dword [esp + 0xce], 0x660047e
mov dword [esp + 0xd2], 0x3aaa3894
mov dword [esp + 0xd6], 0x3e5a3c5a
mov dword [esp + 0xda], 0x32af30a6
mov dword [esp + 0xde], 0x36153454
mov dword [esp + 0xe2], 0x2abc2844
mov dword [esp + 0xe6], 0x2ebe2c49
mov dword [esp + 0xea], 0x22b220a6
mov dword [esp + 0xee], 0x264024b7
mov dword [esp + 0xf2], 0x5a3558ba
mov dword [esp + 0xf6], 0x5ecf5c2b
mov dword [esp + 0xfa], 0x523750c0
mov dword [esp + 0xfe], 0x56c954ca
mov dword [esp + 0x102], 0x4ada4832
mov dword [esp + 0x106], 0x4e324c27
mov dword [esp + 0x10a], 0x42d540da
mov dword [esp + 0x10e], 0x46da44df
mov dword [esp + 0x112], 0x7ae278d8
mov dword [esp + 0x116], 0x7e347c17
mov dword [esp + 0x11a], 0x7226702c
mov dword [esp + 0x11e], 0x76367426
mov dword [esp + 0x122], 0x6a2f6831
mov dword [esp + 0x126], 0x6e396c3b
mov dword [esp + 0x12a], 0x6232603e
mov dword [esp + 0x12e], 0x66346432
mov dword [esp + 0x132], 0x9afd9836
mov dword [esp + 0x136], 0x9edf9cc8
mov dword [esp + 0x13a], 0x92d990d7
mov dword [esp + 0x13e], 0x96c594d2
mov dword [esp + 0x142], 0x8ad888c7
mov dword [esp + 0x146], 0x8ed98cdb
mov dword [esp + 0x14a], 0x82d380cd
mov dword [esp + 0x14e], 0x86d384c2
mov dword [esp + 0x152], 0xbaeeb8d1
mov dword [esp + 0x156], 0xbed1bced
mov word [esp + 0x15a], 0xb0bf
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0xc3
xor cl, byte [esp + eax + 0x76]
add cl, 0xe8
mov byte [esp + eax + 0x76], cl
inc eax
cmp eax, 0xe6
jne 0x421b00
lea edi, [esp + 0x9ba]
lea eax, [esp + 0x76]
mov ecx, 0x39
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x15a]
lea edi, [esp + 0xa9e]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x76], 0xff57fd31
mov dword [esp + 0x7a], 0xc370c163
mov dword [esp + 0x7e], 0xc775c56b
mov dword [esp + 0x82], 0xcb6cc967
mov dword [esp + 0x86], 0xcf12cd78
mov dword [esp + 0x8a], 0xd374d11f
mov dword [esp + 0x8e], 0xd77fd572
mov dword [esp + 0x92], 0xdb7fd97b
mov dword [esp + 0x96], 0xdf2fdd00
mov dword [esp + 0x9a], 0xa34ca153
mov dword [esp + 0x9e], 0xa77aa554
mov dword [esp + 0xa2], 0xab1fa967
mov dword [esp + 0xa6], 0xaf02ad18
mov dword [esp + 0xaa], 0xb31db11f
mov dword [esp + 0xae], 0xb76ab51f
mov dword [esp + 0xb2], 0xbb08b968
mov dword [esp + 0xb6], 0xbf18bd13
mov dword [esp + 0xba], 0x832e8129
mov dword [esp + 0xbe], 0x87358521
mov dword [esp + 0xc2], 0x8b458954
mov dword [esp + 0xc6], 0x8f3a8d39
mov dword [esp + 0xca], 0x933d913c
mov dword [esp + 0xce], 0x973d953b
mov dword [esp + 0xd2], 0x9b639944
mov dword [esp + 0xd6], 0x9f699d6f
mov dword [esp + 0xda], 0x63a16195
mov dword [esp + 0xde], 0x67a065a2
mov dword [esp + 0xe2], 0x6b9e6998
mov dword [esp + 0xe6], 0x6f9d6d9d
mov dword [esp + 0xea], 0x73837181
mov dword [esp + 0xee], 0x77d27585
mov dword [esp + 0xf2], 0x7bb8798b
mov dword [esp + 0xf6], 0x7f867d84
mov dword [esp + 0xfa], 0x43b24181
mov dword [esp + 0xfe], 0x47b745b4
mov dword [esp + 0x102], 0x4bbe49b8
mov dword [esp + 0x106], 0x4fbc4d8e
mov dword [esp + 0x10a], 0x53a45191
mov dword [esp + 0x10e], 0x57a155a2
mov dword [esp + 0x112], 0x5b8659ae
mov word [esp + 0x116], 0x5d5c
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x76]
mov edx, ecx
xor edx, 0xe1d4369c
mov edi, eax
and edi, 0x138
add edx, edi
add edx, 0x4d6dcd80
xor edx, esi
mov esi, edx
not esi
and esi, 0xe1
and edx, 0x1e
sub edx, esi
inc dl
mov byte [esp + ecx + 0x76], dl
inc ecx
add eax, 2
cmp ecx, 0xa2
jne 0x421d10
lea edi, [esp + 0x876]
lea eax, [esp + 0x76]
mov ecx, 0x28
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea eax, [esp + 0x116]
lea edi, [esp + 0x916]
mov ecx, 1
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov dword [esp + 0x76], 0x44ba429c
mov dword [esp + 0x7a], 0x58b546a6
mov dword [esp + 0x7e], 0x5ca85aa6
mov dword [esp + 0x82], 0x50b95ea2
mov dword [esp + 0x86], 0x54bf52a5
mov dword [esp + 0x8a], 0x68b1568a
mov dword [esp + 0x8e], 0x6c926a8f
mov dword [esp + 0x92], 0x608a6e8e
mov dword [esp + 0x96], 0x6452628d
mov dword [esp + 0x9a], 0x78596651
mov dword [esp + 0x9e], 0x7c977a49
mov dword [esp + 0xa2], 0x708a7ea2
mov dword [esp + 0xa6], 0x748f7285
mov dword [esp + 0xaa], 0x888768a
mov dword [esp + 0xae], 0xce70af2
mov dword [esp + 0xb2], 0xfd0edd
mov dword [esp + 0xb6], 0x4e502fe
mov dword [esp + 0xba], 0x18fb06fc
mov dword [esp + 0xbe], 0x1ce81afc
mov dword [esp + 0xc2], 0x10c01ef1
mov dword [esp + 0xc6], 0x14e712e4
mov dword [esp + 0xca], 0x28e816e9
mov dword [esp + 0xce], 0x2cd02ad6
mov dword [esp + 0xd2], 0x20e62ec1
mov dword [esp + 0xd6], 0x24142212
mov dword [esp + 0xda], 0x38e42610
mov dword [esp + 0xde], 0x3cfd3aff
mov dword [esp + 0xe2], 0x300b3e0d
mov dword [esp + 0xe6], 0x34003200
mov dword [esp + 0xea], 0xc8063604
mov dword [esp + 0xee], 0xcc2fcaf8
mov dword [esp + 0xf2], 0xc00dcefe
mov dword [esp + 0xf6], 0xc40bc209
mov dword [esp + 0xfa], 0xd8f7c604
mov dword [esp + 0xfe], 0xdceadae9
mov dword [esp + 0x102], 0xd0ebdeed
mov dword [esp + 0x106], 0xd4e1d213
mov dword [esp + 0x10a], 0xe8e1d614
mov dword [esp + 0x10e], 0xecdceadf
mov dword [esp + 0x112], 0xe003eedb
mov word [esp + 0x116], 0xe2e1
mov eax, 9
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x6d]
mov ecx, eax
and ecx, edx
mov esi, ecx
and esi, 2
mov edi, ecx
or ecx, 2
imul ecx, esi
xor esi, 2
and edi, 0xfffffffd
imul edi, esi
add ecx, edi
add edx, eax
add edx, 0xc1dffa00
mov esi, ecx
xor esi, edx
not ecx
and ecx, edx
add ecx, ecx
sub ecx, esi
mov edx, ecx
and edx, 0xb7
and ecx, 0x48
xor ecx, 0x49
sub edx, ecx
inc dl
mov byte [esp + eax + 0x6d], dl
inc eax
cmp eax, 0xab
jne 0x421f40
lea eax, [esp + 0xb42]
lea edx, [esp + 0x76]
mov edi, eax
mov ecx, 0x28
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edx, [esp + 0x116]
lea edi, [esp + 0xbe2]
mov ecx, 1
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov dword [esp + 0x76], 0xdd35db17
mov dword [esp + 0x7a], 0xc152df3d
mov dword [esp + 0x7e], 0xc557c32d
mov dword [esp + 0x82], 0xc92ec729
mov dword [esp + 0x86], 0xcd30cb5e
mov dword [esp + 0x8a], 0xf116cf01
mov dword [esp + 0x8e], 0xf51df314
mov dword [esp + 0x92], 0xf91df715
mov dword [esp + 0x96], 0xfd2dfb06
mov dword [esp + 0x9a], 0xe1ceff2b
mov dword [esp + 0x9e], 0xe518e332
mov dword [esp + 0xa2], 0xe97de729
mov dword [esp + 0xa6], 0xed00eb7e
mov dword [esp + 0xaa], 0x917fef01
mov dword [esp + 0xae], 0x95689379
mov dword [esp + 0xb2], 0x990a9766
mov dword [esp + 0xb6], 0x9d7a9b75
mov dword [esp + 0xba], 0x816c9f77
mov dword [esp + 0xbe], 0x85178367
mov dword [esp + 0xc2], 0x8947877a
mov dword [esp + 0xc6], 0x8d188b1f
mov dword [esp + 0xca], 0xb15f8f62
mov dword [esp + 0xce], 0xb55fb35d
mov dword [esp + 0xd2], 0xb961b74a
mov dword [esp + 0xd6], 0xbd6bbb69
mov dword [esp + 0xda], 0xa163bf6b
mov dword [esp + 0xde], 0xa562a364
mov dword [esp + 0xe2], 0xa97ca776
mov dword [esp + 0xe6], 0xad7fab7b
mov dword [esp + 0xea], 0x5181af7f
mov dword [esp + 0xee], 0x55b05383
mov dword [esp + 0xf2], 0x599a5785
mov dword [esp + 0xf6], 0x5d845b82
mov dword [esp + 0xfa], 0x41905f9f
mov dword [esp + 0xfe], 0x45954392
mov dword [esp + 0x102], 0x499c4796
mov dword [esp + 0x106], 0x4d9e4b88
mov dword [esp + 0x10a], 0x71a64f8f
mov dword [esp + 0x10e], 0x75a373a4
mov dword [esp + 0x112], 0x798477a0
mov word [esp + 0x116], 0x7b7a
mov ecx, 0x80215e8a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x7fdea1ec]
xor edx, ecx
lea esi, [edx - 0x10af451]
mov edi, esi
and edi, 1
mov ebx, esi
and ebx, 0xfe
xor esi, 1
add edx, esi
add edx, 0xfef50baf
sub edx, ebx
add edx, edi
mov byte [esp + ecx + 0x7fdea1ec], dl
inc ecx
cmp ecx, 0x80215f2c
jne 0x422190
lea edx, [esp + 0xaa0]
lea esi, [esp + 0x76]
mov edi, edx
mov ecx, 0x28
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea esi, [esp + 0x116]
lea edi, [esp + 0xb40]
mov ecx, 1
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
lea ecx, [esp + 0x918]
mov dword [esp + 0x60], ecx
lea ecx, [esp + 0x9ba]
mov dword [esp + 0x64], ecx
lea ecx, [esp + 0x876]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], edx
xor edi, edi
xor eax, eax
cmp edi, 0x14
setne al
jmp dword [eax*4 + 0x43f6fc]
mov dword [esp + 0x1c], edi
mov edi, dword [esp + edi + 0x60]
mov dword [esp + 0x76], 0x27562554
mov dword [esp + 0x7a], 0x2b5a2958
mov dword [esp + 0x7e], 0x2f5e2d5c
mov dword [esp + 0x82], 0x336a3140
mov word [esp + 0x86], 0x3534
mov ecx, 0xfb
lea edx, [esp + 0x76]
nop
nop
lea esi, [ecx - 0x80]
and esi, 0x6f
mov ebx, ecx
and ebx, 0x90
or ebx, esi
xor bl, byte [edx]
mov al, 0xdf
sub al, bl
mov byte [edx], al
inc edx
dec ecx
cmp ecx, 0xe9
jne 0x422280
movzx ecx, word [edi]
lea edx, [esp + 0xbe4]
test cx, cx
je 0x4222d1
add edi, 2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x4222c0
mov word [edx], 0
movzx eax, word [esp + 0x76]
test ax, ax
je 0x422310
lea ecx, [esp + 0x78]
mov edi, dword [esp + 0x1c]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4222f0
jmp 0x422314
mov edi, dword [esp + 0x1c]
mov word [edx], 0
mov cx, 0x31
xor eax, eax
cmp cx, 0x35
setb al
mov dword [esp + 0x44], edx
jmp dword [eax*4 + 0x43f704]
mov dword [esp + 0x48], ecx
mov word [edx - 2], cx
lea eax, [esp + 0x34]
lea ecx, [esp + 0xbe4]
push dword [esp + 0x38]
push 0
push 0x20019
push eax
push ecx
call fcn.004391a0
add esp, 0x14
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x43f70c]
jmp 0x422840
mov dword [esp + 0x1c], edi
mov dword [esp + 0x54], 0x800
mov dword [esp + 0x20], 0x400
xor esi, esi
mov dword [esp + 4], 0
jmp 0x4223b1
mov dword [ebp], 0x20003a
add ebp, 4
mov al, 1
mov dword [esp + 4], eax
inc esi
lea eax, [esp + 0x20]
lea edi, [esp + 0xde4]
lea ecx, [esp + 0x50]
lea edx, [esp + 0x54]
lea ebx, [esp + 0x76]
push eax
push edi
push ecx
push edx
push ebx
push esi
push dword [esp + 0x4c]
call fcn.004396d0
add esp, 0x1c
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x43f714]
test byte [esp + 4], 1
sete al
mov edx, dword [esp + 0x50]
cmp edx, 1
sete cl
and cl, al
movzx eax, cl
jmp dword [eax*4 + 0x43f71c]
xor eax, eax
cmp edx, 3
sete al
jmp dword [eax*4 + 0x43f73c]
mov dword [esp + 0x4c], edx
mov dword [esp], esi
mov dword [esp + 0x30], ebp
jmp dword [0x43f724]
mov dword [esp + 0xa], 0x1e7e1c5a
mov dword [esp + 0xe], 0x128e107c
mov dword [esp + 0x12], 0x168b1486
mov dword [esp + 0x16], 0xa090883
mov ecx, 3
mov edx, 0x9ae6f002
mov ebx, 0xfc
movzx eax, byte [esp + ecx + 7]
mov esi, ecx
or esi, eax
not eax
or eax, ebx
and eax, esi
add al, 0xe8
mov byte [esp + ecx + 7], al
lea eax, [ecx - 0x328c8802]
and eax, 0x1f
mov esi, edx
and esi, 0x3e
sub esi, eax
inc ecx
add edx, 2
dec ebx
cmp esi, 0x10
jb 0x422460
jmp case.0x421357.31
jmp dword [0x43f730]
mov dword [esp + 0xa], 0x1e7e1c5a
mov dword [esp + 0xe], 0x128e107c
mov dword [esp + 0x12], 0x168b1486
mov dword [esp + 0x16], 0xa090883
mov ecx, 3
mov edx, 0x9ae6f002
mov ebx, 0xfc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx + 7]
mov esi, ecx
or esi, eax
not eax
or eax, ebx
and eax, esi
add al, 0xe8
mov byte [esp + ecx + 7], al
lea eax, [ecx - 0x328c8802]
and eax, 0x1f
mov esi, edx
and esi, 0x3e
sub esi, eax
inc ecx
add edx, 2
dec ebx
cmp esi, 0x10
jb 0x4224e0
movzx eax, word [esp + 0xa]
lea ebp, [esp + 0x76]
test ax, ax
je 0x4224a0
lea ecx, [esp + 0x76]
lea ebx, [esp + 0xa]
mov ebp, ecx
jmp 0x42253c
movzx eax, word [ebx]
test ax, ax
je 0x4224a0
movzx esi, word [ecx]
test si, si
je 0x422560
add ebx, 2
add ecx, 2
lea edx, [ebp + 2]
cmp si, ax
je 0x422556
mov ebp, edx
mov ecx, edx
je 0x422530
lea ebx, [esp + 0xa]
jmp 0x422530
xor ebp, ebp
jmp dword [0x43f730]
xor eax, eax
test ebp, ebp
setne al
jmp dword [eax*4 + 0x43f734]
xor eax, eax
cmp dword [esp + 0x4c], 3
sete al
mov ebp, dword [esp + 0x30]
mov esi, dword [esp]
jmp dword [eax*4 + 0x43f73c]
mov dword [esp], esi
mov dword [esp + 0xa], 0xb210b00f
mov dword [esp + 0xe], 0xb626b420
mov dword [esp + 0x12], 0xaa36a820
mov dword [esp + 0x16], 0xae09ac39
mov word [esp + 0x1a], 0xa0af
mov eax, 0x5a216b87
nop
nop
nop
movzx ecx, byte [esp + eax - 0x5a216b7d]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xc8
mov byte [esp + eax - 0x5a216b7d], cl
inc eax
cmp eax, 0x5a216b99
jne 0x4225c0
movzx esi, word [esp + 0xa]
test si, si
je 0x422693
lea ecx, [esp + 0x76]
lea edx, [esp + 0xa]
mov eax, ecx
jmp 0x42261c
movzx esi, word [edx]
test si, si
je 0x42269b
movzx edi, word [ecx]
test di, di
je 0x422699
add edx, 2
add ecx, 2
lea ebx, [eax + 2]
cmp di, si
je 0x422636
mov eax, ebx
mov ecx, ebx
je 0x422610
lea edx, [esp + 0xa]
jmp 0x422610
mov ecx, dword [esp + 0x20]
cmp ecx, 2
mov ebp, dword [esp + 0x30]
mov esi, dword [esp]
jb 0x4223a0
shr ecx, 1
mov eax, ecx
and eax, 3
je 0x422703
xor edx, edx
lea edi, [esp + 0xde4]
nop
nop
nop
nop
nop
nop
movzx esi, word [edi]
xor ebx, ebx
test si, si
setne bl
lea edi, [edi + ebx*2]
mov word [ebp], si
add ebp, 2
inc edx
cmp eax, edx
jne 0x422670
mov eax, ecx
sub eax, edx
mov esi, dword [esp]
jmp 0x422705
lea eax, [esp + 0x76]
jmp 0x42269b
xor eax, eax
xor ecx, ecx
test eax, eax
setne cl
jmp dword [ecx*4 + 0x43f744]
mov esi, dword [esp]
jmp case.0x421357.37
mov edx, dword [esp + 0x20]
cmp edx, 2
mov esi, dword [esp]
jb 0x4227d6
shr edx, 1
mov ecx, edx
and ecx, 3
je 0x42276b
xor esi, esi
lea eax, [esp + 0xde4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, word [eax]
xor ebx, ebx
test di, di
setne bl
lea eax, [eax + ebx*2]
mov word [ebp], di
add ebp, 2
inc esi
cmp ecx, esi
jne 0x4226e0
mov ecx, edx
sub ecx, esi
mov esi, dword [esp]
jmp 0x422774
mov eax, ecx
dec ecx
cmp ecx, 3
jb 0x4223a0
nop
movzx ecx, word [edi]
xor edx, edx
test cx, cx
setne dl
lea esi, [edi + edx*2]
mov word [ebp], cx
movzx ecx, word [edi + edx*2]
xor edx, edx
test cx, cx
setne dl
lea edi, [esi + edx*2]
mov word [ebp + 2], cx
movzx ecx, word [esi + edx*2]
xor edx, edx
test cx, cx
setne dl
lea esi, [edi + edx*2]
mov word [ebp + 4], cx
movzx edx, word [edi + edx*2]
xor ecx, ecx
test dx, dx
setne cl
mov word [ebp + 6], dx
add ebp, 8
lea edi, [esi + ecx*2]
add eax, 0xfffffffc
jne 0x422710
mov esi, dword [esp]
jmp 0x4223a0
lea eax, [esp + 0xde4]
mov ecx, edx
dec edx
cmp edx, 3
jb 0x4227d6
nop
nop
nop
nop
nop
nop
movzx edx, word [eax]
xor ebx, ebx
test dx, dx
setne bl
lea esi, [eax + ebx*2]
mov word [ebp], dx
movzx eax, word [eax + ebx*2]
xor edx, edx
test ax, ax
setne dl
lea edi, [esi + edx*2]
mov word [ebp + 2], ax
movzx eax, word [esi + edx*2]
xor edx, edx
test ax, ax
setne dl
lea esi, [edi + edx*2]
mov word [ebp + 4], ax
movzx edx, word [edi + edx*2]
xor eax, eax
test dx, dx
setne al
mov word [ebp + 6], dx
add ebp, 8
lea eax, [esi + eax*2]
add ecx, 0xfffffffc
jne 0x422780
mov esi, dword [esp]
mov word [ebp], 0xa
add ebp, 2
mov al, 1
mov dword [esp + 0x2c], eax
jmp case.0x421357.37
mov ecx, dword [0x444ab8]
test ecx, ecx
mov edi, dword [esp + 0x1c]
je 0x422840
mov eax, dword [esp + 0x34]
xor edx, edx
mov esi, dword [0x444abc]
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xb430e561
je 0x422820
inc edx
cmp ecx, edx
jne 0x422810
jmp 0x422840
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, 0xffffffff
je 0x422840
push eax
push 4
push ecx
push dword [0x444ac0]
call fcn.00436ff0
add esp, 0x10
nop
nop
nop
nop
nop
mov eax, dword [case.0x421357.43]
mov edx, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
nop
nop
nop
jmp eax
inc ecx
xor eax, eax
cmp cx, 0x35
setb al
jmp dword [eax*4 + 0x43f704]
add edi, 4
xor eax, eax
cmp edi, 0x14
setne al
jmp dword [eax*4 + 0x43f6fc]
mov ecx, dword [0x444ab8]
test ecx, ecx
mov edi, dword [esp + 0x40]
je 0x4228c0
mov eax, dword [esp + 0x38]
xor edx, edx
mov esi, dword [0x444abc]
nop
cmp dword [esi + edx*8], 0xb430e561
je 0x4228a0
inc edx
cmp ecx, edx
jne 0x422890
jmp 0x4228c0
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, 0xffffffff
je 0x4228c0
push eax
push 4
push ecx
push dword [0x444ac0]
call fcn.00436ff0
add esp, 0x10
nop
nop
nop
nop
nop
mov eax, dword [case.0x421357.17]
mov esi, dword [esp + 0x3c]
nop
nop
nop
nop
nop
nop
nop
jmp eax
jmp dword [0x43f76c]
push esi
call fcn.004082d0
add esp, 4
inc edi
xor eax, eax
cmp edi, dword [esp + 0x24]
setb al
jmp dword [eax*4 + 0x43f6dc]
mov word [ebp], 0
mov eax, dword [esp + 0x2c]
mov ecx, eax
and cl, 1
movzx ecx, cl
jmp dword [ecx*4 + 0x43f6e4]
movzx ebx, word [esp + 0x11e4]
xor edi, edi
test bx, bx
je 0x42296b
lea eax, [esp + 0x11e6]
mov ecx, ebx
jmp 0x42293c
inc edi
movzx ecx, word [eax]
add eax, 2
test cx, cx
je 0x42296b
cmp cx, 0x7f
jbe 0x422930
movzx edx, cx
cmp edx, 0x7ff
ja 0x422960
add edi, 2
jmp 0x422931
cmp cx, 0xffff
je 0x422931
add edi, 3
jmp 0x422931
lea eax, [edi + 1]
push eax
call fcn.004082c0
add esp, 4
mov esi, eax
mov dword [esp + 4], eax
test bx, bx
je 0x422ab8
mov esi, dword [esp + 4]
test edi, edi
je 0x422ab8
lea edx, [esp + 0x11e4]
mov ecx, edi
mov esi, dword [esp + 4]
nop
movzx ebx, bx
lea ebp, [edx + 2]
cmp bx, 0x7f
ja 0x4229c0
lea eax, [esi + 1]
mov byte [esi], bl
jmp 0x422aa0
cmp ebx, 0x7ff
ja 0x4229f0
cmp ecx, 2
jb 0x4229f0
mov eax, ebx
shr eax, 6
xor al, 0xc0
mov byte [esi], al
and bl, 0x3f
or bl, 0x80
lea eax, [esi + 2]
mov byte [esi + 1], bl
jmp 0x422aa0
mov eax, ebx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x422a61
cmp ecx, 4
jb 0x422a61
movzx ebp, word [edx + 2]
shl ebx, 0xa
and ebx, 0x9ffc00
lea eax, [ebx + ebp]
add eax, 0xffff2400
mov dword [esp], eax
add ebx, ebp
add ebx, 0x2400
mov eax, ebx
shr eax, 0x12
add edx, 4
add al, 0xf0
mov byte [esi], al
shr ebx, 0xc
and bl, 0x3f
or bl, 0x80
mov byte [esi + 1], bl
mov eax, dword [esp]
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [esi + 2], al
mov ebx, 0xff
sub ebx, ebp
or ebx, 0x3f
add ebx, ebp
add bl, 0x81
lea eax, [esi + 4]
mov byte [esi + 3], bl
mov ebp, edx
jmp 0x422aa0
movzx eax, ax
cmp eax, 0xdc00
jne 0x422a6f
mov edx, ebp
jmp 0x422aa8
cmp ecx, 3
jb 0x422a97
mov eax, ebx
shr eax, 0xc
or al, 0xe0
mov byte [esi], al
mov eax, ebx
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [esi + 1], al
and bl, 0x3f
or bl, 0x80
lea eax, [esi + 3]
mov byte [esi + 2], bl
jmp 0x422aa0
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
add ecx, esi
sub ecx, eax
mov edx, ebp
mov esi, eax
movzx ebx, word [edx]
test bx, bx
je 0x422ab8
test ecx, ecx
jne 0x4229a0
mov byte [esi], 0
mov dword [esp + 0x76], 0x38333200
mov dword [esp + 0x7a], 0x2c26253c
mov dword [esp + 0x7e], 0x2f252520
mov dword [esp + 0x82], 0x242a01e2
mov dword [esp + 0x86], 0x2f2c2d2d
mov dword [esp + 0x8a], 0x172506ea
mov dword [esp + 0x8e], 0x917130f
mov dword [esp + 0x92], 0x681bd01e
mov word [esp + 0x96], 0xe215
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x89
xor cl, byte [esp + eax + 0x76]
add cl, 0xb8
mov byte [esp + eax + 0x76], cl
inc eax
cmp eax, 0x22
jne 0x422b20
lea eax, [esp + 0x76]
mov ecx, dword [esp + 0x21f8]
push edi
mov esi, dword [esp + 8]
push esi
push eax
call fcn.004091b0
jmp dword [0x43f774]
push esi
mov esi, eax
call fcn.004082d0
mov eax, esi
add esp, 4
and al, 1
add esp, 0x21e4
pop esi
pop edi
pop ebx
pop ebp
ret