Function at 0x401944
Capabilities:
Contain obfuscated stackstrings

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x6d8
mov eax, dword [esp + 0x6ec]
mov edx, dword [esp + 0x6f0]
mov byte [esp + 0x680], 0xb3
mov dword [esp + 0x6d4], eax
xor ecx, ecx
mov byte [esp + 0x681], 8
mov dword [esp + 0x6c8], edx
mov byte [esp + 0x682], 0x5a
mov byte [esp + 0x683], 0xd5
mov byte [esp + 0x684], 0x34
mov byte [esp + 0x685], 0xa2
mov byte [esp + 0x686], 0x3a
mov byte [esp + 0x687], 0x44
mov byte [esp + 0x688], 0x86
mov byte [esp + 0x689], 0x65
mov byte [esp + 0x68a], 0xad
mov byte [esp + 0x68b], 0x26
mov byte [esp + 0x68c], 0x25
mov byte [esp + 0x68d], 0xd8
mov byte [esp + 0x68e], 0x4b
mov byte [esp + 0x68f], 0x28
mov byte [esp + 0x690], 0x5c
mov byte [esp + 0x691], 0xca
mov byte [esp + 0x692], 0x81
mov byte [esp + 0x693], 0xd
mov byte [esp + 0x694], 0x5e
mov byte [esp + 0x695], 0x7d
mov byte [esp + 0x696], 0x45
mov byte [esp + 0x697], 2
mov dword [esp + 0x698], ecx
mov dword [esp + 0x69c], ecx
mov ebp, 0x422214
mov eax, dword [ebp]
mov dword [esp + 0x66c], eax
mov edx, dword [ebp + 4]
mov dword [esp + 0x670], edx
mov ecx, dword [ebp + 8]
mov dword [esp + 0x674], ecx
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x678], ebx
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x67c], esi
push 0xa
push 0x5dc
call fcn.00408ff0
mov dword [esp + 0x6cc], eax
push 0x1fffeb
call fcn.00407d40
mov edi, eax
push 0x1fff75
call fcn.00407d40
mov dword [esp + 0x6d0], eax
push 0xfffffffffffffffd
call fcn.00407d40
mov ebx, eax
push 0x63b
call fcn.00407d40
mov dword [esp + 0x6e4], eax
push 0x1c2de3
call fcn.00407d40
mov ebp, eax
push 0x14cc18
call fcn.00407d40
mov dword [esp + 0x6f0], eax
push 0
call fcn.00407d40
mov dword [esp + 0x6e0], eax
push 0
call fcn.00407d40
mov dword [esp + 0x6e0], eax
push 0
call fcn.00407d40
mov dword [esp + 0x6e0], eax
push 0
call fcn.00407d40
mov dword [esp + 0x6e0], eax
push 0xe791d
call fcn.00407d40
mov dword [esp + 0x6e0], eax
push 0
call fcn.00407d40
mov esi, eax
push 0x4000
call fcn.00407d40
mov dword [esp + 0x6e4], eax
push 0
call fcn.00407d40
mov dword [esp + 0x6e4], eax
push 0
push edi
mov eax, dword [esp + 0x714]
push eax
push ebx
call fcn.00409880
add esp, 0x50
call fcn.00408da0
mov ebx, eax
call fcn.00408da0
mov dword [esp + 0x6a0], eax
push ebx
push 0
push ebp
push ebp
call fcn.00409ae0
add esp, 0x10
test eax, eax
jne 0x401ba3
push str.Internal_Error_1
mov eax, dword [esp + 0x6cc]
push eax
call fcn.00414f9e
mov eax, 1
add esp, 0x6e0
pop ebx
pop ebp
pop esi
pop edi
ret
push ebp
call fcn.00407c70
mov eax, dword [esp + 0x6d4]
push eax
call fcn.00407c70
mov eax, dword [esp + 0x6d8]
push eax
push ebp
push ebx
call fcn.0040b420
add esp, 0x14
xor eax, eax
mov dword [esp + 0x538], eax
mov dword [esp + 0x53c], eax
mov dword [esp + 0x540], eax
mov dword [esp + 0x544], eax
mov dword [esp + 0x548], eax
mov dword [esp + 0x54c], eax
mov dword [esp + 0x550], eax
mov dword [esp + 0x554], eax
mov dword [esp + 0x558], eax
mov dword [esp + 0x55c], eax
mov dword [esp + 0x560], eax
mov dword [esp + 0x564], eax
mov dword [esp + 0x568], eax
mov dword [esp + 0x56c], eax
mov dword [esp + 0x570], eax
mov dword [esp + 0x574], eax
mov dword [esp + 0x578], eax
mov dword [esp + 0x57c], eax
mov dword [esp + 0x580], eax
mov dword [esp + 0x584], eax
mov dword [esp + 0x588], eax
mov dword [esp + 0x58c], eax
mov dword [esp + 0x590], eax
mov dword [esp + 0x594], eax
mov dword [esp + 0x598], eax
xor eax, eax
mov dword [esp + 0x59c], eax
mov dword [esp + 0x5a0], eax
mov dword [esp + 0x5a4], eax
mov dword [esp + 0x5a8], eax
mov dword [esp + 0x5ac], eax
mov dword [esp + 0x5b0], eax
mov dword [esp + 0x5b4], eax
mov dword [esp + 0x5b8], eax
mov dword [esp + 0x5bc], eax
mov dword [esp + 0x5c0], eax
mov dword [esp + 0x5c4], eax
mov dword [esp + 0x5c8], eax
mov dword [esp + 0x5cc], eax
mov dword [esp + 0x5d0], eax
mov dword [esp + 0x5d4], eax
mov dword [esp + 0x5d8], eax
mov dword [esp + 0x5dc], eax
mov dword [esp + 0x5e0], eax
mov dword [esp + 0x5e4], eax
mov dword [esp + 0x5e8], eax
mov dword [esp + 0x5ec], eax
mov dword [esp + 0x5f0], eax
mov dword [esp + 0x5f4], eax
mov dword [esp + 0x5f8], eax
mov dword [esp + 0x5fc], eax
xor eax, eax
mov dword [esp + 0x600], eax
mov dword [esp + 0x604], eax
mov dword [esp + 0x608], eax
mov dword [esp + 0x60c], eax
mov dword [esp + 0x610], eax
mov dword [esp + 0x614], eax
mov dword [esp + 0x618], eax
mov dword [esp + 0x61c], eax
mov dword [esp + 0x620], eax
mov dword [esp + 0x624], eax
mov dword [esp + 0x628], eax
mov dword [esp + 0x62c], eax
mov dword [esp + 0x630], eax
mov dword [esp + 0x634], eax
mov dword [esp + 0x638], eax
mov dword [esp + 0x63c], eax
mov dword [esp + 0x640], eax
mov dword [esp + 0x644], eax
mov dword [esp + 0x648], eax
mov dword [esp + 0x64c], eax
mov dword [esp + 0x650], eax
mov dword [esp + 0x654], eax
mov dword [esp + 0x658], eax
mov dword [esp + 0x65c], eax
mov dword [esp + 0x660], eax
mov eax, dword [esp + 0x6c4]
mov edx, dword [esp + 0x6d4]
mov dword [eax + 0x234], 0xa
push edx
push esi
call fcn.0040b710
push esi
push 4
push esi
call fcn.0040bca0
add esp, 0x14
cmp eax, 3
je 0x401e2d
push str.Invalid_Request_Code
mov eax, dword [esp + 0x6cc]
push eax
call fcn.00414f9e
mov eax, 2
add esp, 0x6e0
pop ebx
pop ebp
pop esi
pop edi
ret
push esi
push 8
push esi
call fcn.0040bca0
add esp, 0xc
cmp eax, 7
je 0x401e60
push str.Invalid_Old_Request_Code
mov eax, dword [esp + 0x6cc]
push eax
call fcn.00414f9e
mov eax, 3
add esp, 0x6e0
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [esp + 0x668], ebx
xor eax, eax
mov dword [esp + 0x664], eax
mov ebp, 1
mov edi, eax
push esi
push 2
push esi
call fcn.0040bca0
mov ebx, eax
push esi
push 0x64
push esi
call fcn.0040bca0
add esp, 0x18
imul eax, ebp
imul ebp, ebp, 0x64
add edi, eax
test ebx, ebx
jne 0x401e77
mov ebx, dword [esp + 0x668]
mov dword [esp + 0x664], edi
mov eax, edi
cmp eax, 0xbb8
jl 0x401eb8
cmp eax, 0xfa0
jle 0x401eda
push str.Unsupported_Request_Code
mov eax, dword [esp + 0x6cc]
push eax
call fcn.00414f9e
mov eax, 4
add esp, 0x6e0
pop ebx
pop ebp
pop esi
pop edi
ret
lea eax, [esp + 0x538]
push 0
push eax
push esi
push 0x64
call fcn.0040c110
add esp, 0x10
mov esi, eax
shr esi, 0x1f
add esi, eax
sar esi, 1
jle 0x401f25
xor ebp, ebp
movzx edx, byte [esp + ebp + 0x538]
mov edi, eax
sub edi, ebp
movzx ecx, byte [esp + edi + 0x537]
mov byte [esp + ebp + 0x538], cl
mov byte [esp + edi + 0x537], dl
add ebp, 1
cmp ebp, esi
jl 0x401efc
lea edx, [esp]
lea eax, [esp + 0x688]
push eax
push edx
call fcn.00403c68
lea ebp, [esp + 8]
lea ecx, [esp + 0x688]
lea edx, [esp + 0x540]
lea eax, [esp + 0x51c]
push 9
push eax
push edx
push ecx
push ebp
call fcn.00403a80
lea edx, [esp + 0x11c]
lea eax, [esp + 0x6a4]
push eax
push edx
call fcn.00403c68
lea ebp, [esp + 0x124]
lea ecx, [esp + 0x6a4]
lea edx, [esp + 0x55c]
lea eax, [esp + 0x538]
push 8
push eax
push edx
push ecx
push ebp
call fcn.004039c8
movzx eax, byte [esp + 0x554]
lea ecx, [esp + 0x238]
lea edx, [esp + 0x6c8]
xor byte [esp + 0x54c], al
xor byte [esp + 0x54d], al
xor byte [esp + 0x54e], al
xor byte [esp + 0x54f], al
xor byte [esp + 0x550], al
xor byte [esp + 0x551], al
xor byte [esp + 0x552], al
xor byte [esp + 0x553], al
push edx
push ecx
call fcn.00403c68
lea ecx, [esp + 0x240]
lea edx, [esp + 0x6c0]
lea eax, [esp + 0x554]
push 8
push eax
push eax
push edx
push ecx
call fcn.004039c8
mov edi, dword [esp + 0x568]
mov esi, dword [esp + 0x56c]
mov ebp, esi
shl ebp, 7
shr esi, 0x19
shr edi, 0x19
or ebp, edi
mov edi, ebp
and edi, 0xf
shl edi, 0xc
mov eax, ebp
mov edx, ebp
and eax, 0xf000
shr eax, 0xc
or edi, eax
and edx, 0xf0
shl edx, 4
or edi, edx
mov ecx, ebp
and ecx, 0xf00
shr ecx, 4
or edi, ecx
movzx eax, di
shr ebp, 0x10
mov dword [esp + 0x720], eax
mov edx, ebp
and edx, 0xf
shl edx, 0xc
mov eax, ebp
and eax, 0xf000
shr eax, 0xc
or edx, eax
mov eax, ebp
and eax, 0xf0
shl eax, 4
or edx, eax
and ebp, 0xf00
shr ebp, 4
or edx, ebp
movzx eax, dx
mov dword [esp + 0x724], eax
mov edx, esi
and edx, 0xf
shl edx, 0xc
mov eax, esi
and eax, 0xf000
shr eax, 0xc
or edx, eax
mov eax, esi
and eax, 0xf0
shl eax, 4
or edx, eax
and esi, 0xf00
shr esi, 4
or edx, esi
movzx eax, dx
movzx edx, byte [esp + 0x568]
mov dword [esp + 0x728], eax
movzx eax, byte [esp + 0x56f]
mov byte [esp + 0x568], al
movzx eax, byte [esp + 0x56e]
mov byte [esp + 0x56f], dl
movzx edx, byte [esp + 0x569]
mov byte [esp + 0x569], al
movzx eax, byte [esp + 0x56d]
mov byte [esp + 0x56e], dl
movzx edx, byte [esp + 0x56a]
mov byte [esp + 0x56a], al
movzx eax, byte [esp + 0x56c]
mov byte [esp + 0x56d], dl
movzx edx, byte [esp + 0x56b]
mov byte [esp + 0x56b], al
mov eax, dword [esp + 0x6f8]
mov byte [esp + 0x56c], dl
lea edx, [esp + 0x568]
push eax
push edx
push 8
call fcn.0040bf10
mov eax, dword [esp + 0x704]
push eax
push 0xffffffffffffffe7
push eax
call fcn.0040c5e0
add esp, 0x6c
mov eax, dword [esp + 0x6cc]
lea ebp, [esp + 0x59c]
push eax
mov edx, dword [esp + 0x6d4]
push edx
mov ecx, dword [esp + 0x6dc]
push ecx
push str._04X_04X_04X
push ebp
call fcn.00414f9e
mov byte [esp + 0x5bf], 0x80
lea edx, [esp + 0x680]
lea eax, [esp + 0x5b0]
mov byte [esp + 0x5ec], 0x60
push eax
push edx
call fcn.00403ca8
movzx ecx, byte [esp + 0x688]
movzx edx, byte [esp + 0x689]
movzx eax, byte [esp + 0x68a]
mov dword [esp + 0x684], ebx
movzx ebx, byte [esp + 0x68b]
mov dword [esp + 0x6f0], ebx
mov byte [esp + 0x688], bl
movzx ebx, byte [esp + 0x68c]
mov byte [esp + 0x68b], cl
mov dword [esp + 0x6ec], eax
xor ebp, ebp
mov byte [esp + 0x689], al
movzx eax, byte [esp + 0x68f]
mov byte [esp + 0x68a], dl
mov dword [esp + 0x6e8], ebx
mov dword [esp + 0x54c], eax
mov byte [esp + 0x68c], al
movzx eax, byte [esp + 0x68d]
mov byte [esp + 0x68f], bl
movzx ebx, byte [esp + 0x68e]
mov dword [esp + 0x550], ebx
mov byte [esp + 0x68d], bl
mov ebx, dword [esp + 0x6f0]
mov byte [esp + 0x68e], al
mov byte [esp + 0x554], bl
mov ebx, dword [esp + 0x6ec]
mov byte [esp + 0x555], bl
mov byte [esp + 0x556], dl
mov edx, dword [esp + 0x54c]
mov byte [esp + 0x557], cl
mov byte [esp + 0x558], dl
mov edx, dword [esp + 0x550]
mov byte [esp + 0x559], dl
mov byte [esp + 0x55a], al
mov eax, dword [esp + 0x6e8]
mov byte [esp + 0x55b], al
mov dword [esp + 0x6b4], ebp
mov dword [esp + 0x6b8], ebp
mov ebx, dword [esp + 0x684]
lea edx, [esp + 0x31c]
lea eax, [esp + 0x6ac]
push eax
push edx
call fcn.00403c68
lea ebp, [esp + 0x324]
lea ecx, [esp + 0x6bc]
lea edx, [esp + 0x55c]
lea eax, [esp + 0x544]
push 8
push eax
push edx
push ecx
push ebp
call fcn.00403b94
xor eax, eax
mov dword [esp + 0x6d0], eax
mov dword [esp + 0x6d4], eax
lea edx, [esp + 0x438]
lea eax, [esp + 0x6c0]
push eax
push edx
call fcn.00403c68
lea ebp, [esp + 0x440]
lea ecx, [esp + 0x6d8]
lea edx, [esp + 0x578]
lea eax, [esp + 0x568]
push 8
push eax
push edx
push ecx
push ebp
call fcn.00403b94
movzx edx, byte [esp + 0x57b]
movzx eax, byte [esp + 0x583]
mov ecx, dword [esp + 0x6fc]
push ecx
and edx, 7
xor edx, 2
and eax, 7
xor edx, eax
push edx
push ecx
call fcn.0040bab0
mov eax, dword [esp + 0x708]
push eax
push 0x2710
push eax
call fcn.0040bab0
mov eax, dword [esp + 0x714]
push eax
push 0x20
push eax
call fcn.0040c5e0
add esp, 0x78
mov edx, dword [esp + 0x6a8]
push edx
mov eax, dword [esp + 0x6a8]
push eax
push edx
call fcn.0040cbe0
mov eax, dword [esp + 0x6d0]
mov edx, dword [esp + 0x6b0]
mov dword [eax + 0x234], 0x10
push edx
push 0x2710
call fcn.00407ca0
mov edx, dword [esp + 0x6bc]
push edx
mov eax, dword [esp + 0x6bc]
push eax
push edx
call fcn.0040ce90
mov edx, dword [esp + 0x6c8]
push edx
mov eax, dword [esp + 0x688]
push eax
push edx
call fcn.0040ccc0
lea eax, [esp + 0x62c]
push 0
push eax
mov edx, dword [esp + 0x6dc]
push edx
push 0x64
call fcn.0040c110
add esp, 0x3c
mov esi, eax
shr esi, 0x1f
add esi, eax
sar esi, 1
jle 0x40245f
xor ebp, ebp
movzx edx, byte [esp + ebp + 0x600]
mov edi, eax
sub edi, ebp
movzx ecx, byte [esp + edi + 0x5ff]
mov byte [esp + ebp + 0x600], cl
mov byte [esp + edi + 0x5ff], dl
add ebp, 1
cmp ebp, esi
jl 0x402436
lea ecx, [esp + 0x600]
lea edx, [esp + 0x500]
push edx
push eax
push ecx
call fcn.00405084
movzx edx, byte [esp + 0x50c]
movzx eax, byte [esp + 0x51f]
movzx ecx, byte [esp + 0x51e]
mov ebp, dword [esp + 0x6b4]
mov byte [esp + 0x50c], al
movzx eax, byte [esp + 0x50d]
mov byte [esp + 0x51f], dl
movzx edx, byte [esp + 0x50e]
mov byte [esp + 0x50d], cl
mov byte [esp + 0x51e], al
movzx eax, byte [esp + 0x51d]
mov byte [esp + 0x50e], al
movzx eax, byte [esp + 0x51c]
mov byte [esp + 0x51d], dl
movzx edx, byte [esp + 0x50f]
mov byte [esp + 0x50f], al
movzx eax, byte [esp + 0x51b]
mov byte [esp + 0x51c], dl
movzx edx, byte [esp + 0x510]
mov byte [esp + 0x510], al
movzx eax, byte [esp + 0x51a]
mov byte [esp + 0x51b], dl
movzx edx, byte [esp + 0x511]
mov byte [esp + 0x511], al
movzx eax, byte [esp + 0x519]
mov byte [esp + 0x51a], dl
movzx edx, byte [esp + 0x512]
mov byte [esp + 0x512], al
movzx eax, byte [esp + 0x518]
mov byte [esp + 0x519], dl
movzx edx, byte [esp + 0x513]
mov byte [esp + 0x513], al
movzx eax, byte [esp + 0x517]
mov byte [esp + 0x518], dl
movzx edx, byte [esp + 0x514]
mov byte [esp + 0x514], al
movzx eax, byte [esp + 0x516]
mov byte [esp + 0x517], dl
movzx edx, byte [esp + 0x515]
mov byte [esp + 0x515], al
mov byte [esp + 0x516], dl
lea esi, [esp + 0x50c]
push ebp
push esi
push 0x14
call fcn.0040bf10
mov eax, dword [esp + 0x6d8]
push eax
push eax
mov edx, ebp
push edx
call fcn.0040d3f0
push 0
call fcn.00417ab7
mov edx, dword [esp + 0x6cc]
push edx
push eax
call fcn.00407ca0
mov eax, dword [esp + 0x6d4]
push eax
push 0x20
push eax
call fcn.0040c5e0
mov edx, dword [esp + 0x6e0]
push edx
mov eax, ebp
push eax
push edx
call fcn.0040cbe0
mov eax, dword [esp + 0x6ec]
push eax
push 0x20
push eax
call fcn.0040c5e0
mov edx, dword [esp + 0x6f8]
push edx
mov eax, dword [esp + 0x704]
push eax
push edx
call fcn.0040cbe0
xor eax, eax
mov dword [esp + 0x660], eax
mov dword [esp + 0x664], eax
mov dword [esp + 0x668], eax
mov dword [esp + 0x66c], eax
mov dword [esp + 0x670], eax
mov dword [esp + 0x674], eax
mov dword [esp + 0x678], eax
mov dword [esp + 0x67c], eax
mov dword [esp + 0x680], eax
mov dword [esp + 0x684], eax
mov dword [esp + 0x688], eax
mov dword [esp + 0x68c], eax
mov dword [esp + 0x690], eax
mov dword [esp + 0x694], eax
mov dword [esp + 0x698], eax
mov dword [esp + 0x69c], eax
mov dword [esp + 0x6a0], eax
mov dword [esp + 0x6a4], eax
mov dword [esp + 0x6a8], eax
mov dword [esp + 0x6ac], eax
mov dword [esp + 0x6b0], eax
mov dword [esp + 0x6b4], eax
mov dword [esp + 0x6b8], eax
mov dword [esp + 0x6bc], eax
mov dword [esp + 0x6c0], eax
lea eax, [esp + 0x660]
push 0
push eax
mov edx, dword [esp + 0x70c]
push edx
push 0x64
call fcn.0040c110
lea ecx, [esp + 0x670]
lea edx, [esp + 0x570]
push edx
push eax
push ecx
call fcn.00405084
add esp, 0x7c
mov eax, dword [esp + 0x6a4]
lea edx, [esp + 0x500]
push eax
push edx
push 0x14
call fcn.0040bf10
mov eax, dword [esp + 0x6cc]
push eax
push eax
mov edx, dword [esp + 0x6b8]
push edx
call fcn.0040d3f0
mov eax, dword [esp + 0x6b8]
push eax
push ebx
mov edx, dword [esp + 0x6c4]
push edx
call fcn.0040af70
mov eax, dword [esp + 0x6d4]
push eax
mov edx, dword [esp + 0x6e4]
push edx
mov ecx, dword [esp + 0x6cc]
push ecx
call fcn.0040b420
mov eax, dword [esp + 0x6f0]
push eax
push eax
mov edx, dword [esp + 0x6f4]
push edx
call fcn.0040d3f0
mov eax, dword [esp + 0x6f4]
push eax
mov edx, dword [esp + 0x700]
push edx
push edx
mov ecx, ebp
push ecx
mov ebx, dword [esp + 0x708]
push ebx
mov ebp, dword [esp + 0x6fc]
push ebp
call fcn.0040ddd0
mov eax, dword [esp + 0x70c]
push eax
mov edx, ebx
push edx
mov ecx, ebp
push ecx
call fcn.0040ce90
mov eax, dword [esp + 0x720]
push eax
push eax
mov edx, dword [esp + 0x720]
push edx
call fcn.0040d3f0
mov edx, dword [esp + 0x724]
push edx
mov eax, dword [esp + 0x718]
push eax
push edx
call fcn.0040cbe0
add esp, 0x78
mov eax, dword [esp + 0x6c0]
push eax
push eax
mov edx, dword [esp + 0x6c0]
push edx
call fcn.0040d3f0
mov edx, dword [esp + 0x6b0]
push edx
push edx
push edx
mov eax, dword [esp + 0x6d8]
push eax
push edx
call fcn.0040dfc0
mov eax, dword [esp + 0x6d4]
push eax
mov edx, dword [esp + 0x6c8]
push edx
mov ecx, dword [esp + 0x6e0]
push ecx
call fcn.0040ce90
mov eax, dword [esp + 0x6ec]
push eax
push eax
mov edx, dword [esp + 0x6e8]
push edx
call fcn.0040d3f0
mov eax, dword [esp + 0x6e0]
push eax
push 0x8000
call fcn.00407ca0
mov eax, dword [esp + 0x6e8]
push eax
push 0x15
push eax
call fcn.0040c5e0
mov edx, dword [esp + 0x6f4]
push edx
mov eax, ebx
push eax
push edx
call fcn.0040cbe0
mov eax, dword [esp + 0x700]
push eax
push 0x15
push eax
call fcn.0040c5e0
mov edx, dword [esp + 0x70c]
push edx
mov eax, dword [esp + 0x71c]
push eax
push edx
call fcn.0040cbe0
add esp, 0x70
lea eax, [esp + 0x600]
push 0
push eax
mov edx, dword [esp + 0x6b0]
push edx
push 0x64
call fcn.0040c110
add esp, 0x10
mov ebp, eax
shr ebp, 0x1f
add ebp, eax
sar ebp, 1
jle 0x4028f8
xor ebx, ebx
movzx edx, byte [esp + ebx + 0x600]
mov esi, eax
sub esi, ebx
movzx ecx, byte [esp + esi + 0x5ff]
mov byte [esp + ebx + 0x600], cl
mov byte [esp + esi + 0x5ff], dl
add ebx, 1
cmp ebx, ebp
jl 0x4028cf
movzx ecx, byte [esp + 0x600]
movzx ebp, byte [esp + 0x520]
movzx edx, byte [esp + 0x601]
movzx esi, byte [esp + 0x521]
xor ecx, ebp
xor edx, esi
movzx ebx, byte [esp + 0x602]
movzx edi, byte [esp + 0x522]
movzx eax, byte [esp + 0x523]
xor ebx, edi
mov dword [esp + 0x534], ebx
movzx ebx, byte [esp + 0x603]
xor ebx, eax
movzx eax, byte [esp + 0x524]
mov dword [esp + 0x530], ebx
movzx ebx, byte [esp + 0x604]
xor ebx, eax
movzx eax, byte [esp + 0x525]
mov dword [esp + 0x668], ebx
movzx ebx, byte [esp + 0x605]
xor ebx, eax
movzx eax, byte [esp + 0x526]
mov dword [esp + 0x6d4], ebx
movzx ebx, byte [esp + 0x606]
xor ebx, eax
movzx eax, byte [esp + 0x607]
mov dword [esp + 0x6d0], ebx
movzx ebx, byte [esp + 0x527]
xor eax, ebx
mov ebx, dword [esp + 0x6d0]
xor ecx, ebx
xor edx, ebx
xor dword [esp + 0x534], ebx
xor eax, ebx
mov dword [esp + 0x6cc], eax
movzx eax, byte [esp + 0x528]
xor dword [esp + 0x530], ebx
xor ecx, eax
movzx eax, byte [esp + 0x529]
mov byte [esp + 0x600], cl
xor dword [esp + 0x668], ebx
xor edx, eax
movzx eax, byte [esp + 0x52a]
xor dword [esp + 0x6d4], ebx
mov byte [esp + 0x601], dl
mov edx, dword [esp + 0x534]
xor edx, eax
movzx eax, byte [esp + 0x52b]
mov byte [esp + 0x602], dl
mov edx, dword [esp + 0x530]
xor edx, eax
movzx eax, byte [esp + 0x52c]
mov byte [esp + 0x603], dl
mov edx, dword [esp + 0x668]
xor edx, eax
movzx eax, byte [esp + 0x52d]
mov byte [esp + 0x604], dl
mov edx, dword [esp + 0x6d4]
xor edx, eax
movzx eax, byte [esp + 0x52e]
mov byte [esp + 0x605], dl
mov edx, ebx
xor edx, eax
movzx eax, byte [esp + 0x52f]
mov byte [esp + 0x606], dl
mov edx, dword [esp + 0x6cc]
xor edx, eax
and edx, 7
mov eax, dword [esp + 0x6a8]
mov byte [esp + 0x607], dl
push eax
call fcn.00407c70
movzx edx, byte [esp + 0x604]
movzx eax, byte [esp + 0x60b]
movzx ebx, byte [esp + 0x605]
movzx ecx, byte [esp + 0x60a]
mov ebp, dword [esp + 0x6ac]
mov byte [esp + 0x604], al
movzx eax, byte [esp + 0x609]
mov byte [esp + 0x60b], dl
movzx edx, byte [esp + 0x606]
mov byte [esp + 0x605], cl
mov byte [esp + 0x60a], bl
mov byte [esp + 0x606], al
movzx eax, byte [esp + 0x608]
mov byte [esp + 0x609], dl
movzx edx, byte [esp + 0x607]
mov byte [esp + 0x607], al
mov byte [esp + 0x608], dl
lea esi, [esp + 0x604]
push ebp
push esi
push 8
call fcn.0040bf10
mov eax, dword [esp + 0x6b4]
push eax
push 0x64
call fcn.00407ca0
mov edx, ebp
push edx
mov eax, dword [esp + 0x6c0]
push eax
push edx
call fcn.0040ce90
mov ecx, dword [esp + 0x688]
mov ebx, ebp
mov eax, 0x51eb851f
imul ecx
sar ecx, 0x1f
push ebx
sar edx, 5
sub edx, ecx
push edx
push ebx
call fcn.0040ccc0
mov eax, ebx
push eax
push eax
push eax
call fcn.0040cbe0
mov edx, ebx
push edx
mov eax, dword [esp + 0x6e4]
push eax
push edx
call fcn.0040ce90
mov ebp, dword [esp + 0x6ac]
mov eax, 0x51eb851f
imul ebp
mov esi, ebx
push esi
sar edx, 5
mov ecx, ebp
sar ecx, 0x1f
sub edx, ecx
imul ebx, edx, 0x64
sub ebp, ebx
push ebp
push esi
call fcn.0040ccc0
mov eax, esi
push eax
push eax
push eax
call fcn.0040cbe0
mov eax, esi
push eax
push 1
push eax
call fcn.0040ccc0
mov eax, dword [esp + 0x710]
push eax
push 8
call fcn.00407ca0
add esp, 0x74
mov edx, esi
push edx
mov eax, dword [esp + 0x6a8]
push eax
push edx
call fcn.0040ce90
mov eax, esi
push eax
push 7
push eax
call fcn.0040ccc0
mov eax, dword [esp + 0x6bc]
push eax
push 4
call fcn.00407ca0
mov edx, esi
push edx
mov eax, dword [esp + 0x6c8]
push eax
push edx
call fcn.0040ce90
mov eax, esi
push eax
push 3
push eax
call fcn.0040ccc0
mov eax, dword [esp + 0x6fc]
mov edx, dword [esp + 0x700]
mov dword [eax + 0x234], 0xa
push edx
mov ecx, esi
push ecx
call fcn.0040b820
xor eax, eax
add esp, 0x718
pop ebx
pop ebp
pop esi
pop edi
ret