Function at 0x403590
Capabilities:
Authenticate hmac
Encode data using base64
Encrypt data using aes mixcolumns step
Parse pe header
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x118
add eax, 0x39
sub eax, 0x39
mov eax, dword [ebp + 0x1c]
push ecx
add ecx, dword [ebp - 8]
and ecx, eax
xor ecx, dword [ebp - 0x10]
or ecx, edi
pop ecx
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
push ebx
push eax
sar eax, 0x11
and eax, ecx
add eax, dword [ebp - 0xc]
and eax, edi
push edx
pop edx
pop eax
or ebx, edi
add ebx, edi
pop ebx
mov ebx, dword [ebp + 0x24]
mov dword [ebp - 0x108], eax
mov eax, dword [ebp + 0x20]
add ebx, 0x32
nop
sub ebx, 0x32
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp + 0x10]
add eax, 0xb
sub eax, 0xb
mov dword [ebp - 0x110], eax
mov eax, 1
add edx, 0x4a
sub edx, 0x4a
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x10c]
mov dword [ebp - 0x18], ebx
add ecx, 9
add ebx, 0x46
add edi, 1
add eax, 0x4d
sub eax, 0x4d
sub edi, 1
sub ebx, 0x46
sub ecx, 9
mov ebx, dword [ebp - 0x108]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x24], edx
mov ecx, dword [ebp - 0x110]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x2c], edi
nop
mov dword [ebp - 0x30], esi
mov edx, dword [ebp - 0x30]
add eax, 0x33
push ebx
or ebx, 0x4c
sub ebx, dword [ebp - 0xc]
sub ebx, edi
or ebx, dword [ebp - 0x14]
pop ebx
sub eax, 0x33
mov edx, dword [edx + 0x5c]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x60]
push edx
sub edx, ebx
and edx, ebx
pop edx
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x30]
add edx, 0x18
mov dword [ebp - 0x3c], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x58]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x10]
mov dword [ebp - 0x44], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x80]
mov dword [ebp - 0x48], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x70]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x74]
mov dword [ebp - 0x54], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x78]
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x7c]
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x60], 0
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx + 8]
mov edx, eax
shl edx, cl
push ecx
pop ecx
sub edx, 1
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx + 4]
shl eax, cl
add ebx, 0x23
sub ebx, 0x23
sub eax, 1
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x30]
push ebx
pop ebx
mov eax, dword [eax]
push esi
sub esi, edi
mov esi, dword [ebp - 0xc]
add esi, dword [ebp - 0xc]
pop esi
mov dword [ebp - 0x6c], eax
add ecx, 0x10
push ebx
pop ebx
sub ecx, 0x10
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x84]
mov dword [ebp - 0x70], eax
push edi
xor edi, ecx
sub edi, dword [ebp - 0x18]
and edi, ebx
pop edi
mov eax, dword [ebp - 0x30]
add esi, 0x25
add eax, 0x3f
sub eax, 0x3f
sub esi, 0x25
mov eax, dword [eax + 0x68]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x6c]
mov dword [ebp - 0x78], eax
mov eax, dword [ebp - 0x30]
push eax
push eax
push edi
and edi, eax
sub edi, 9
shl edi, 0x51
xor edi, eax
and edi, esi
pop edi
or eax, dword [ebp - 0xc]
xor eax, dword [ebp - 0x18]
and eax, dword [ebp - 0x18]
pop eax
mov eax, edx
pop eax
mov eax, dword [eax + 0x14]
push eax
pop eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0xc]
push edi
or edi, dword [ebp - 0x14]
and edi, dword [ebp - 0x18]
pop edi
mov dword [ebp - 0x80], eax
mov eax, dword [ebp - 0x30]
push edi
pop edi
mov eax, dword [eax + 0x64]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x24]
mov dword [eax], 0
mov eax, dword [ebp - 0x18]
add ebx, 0x57
add edi, 0x23
add ebx, 0x63
add esi, 0x4c
sub esi, 0x4c
sub ebx, 0x63
sub edi, 0x23
sub ebx, 0x57
mov dword [eax], 0
cmp dword [ebp - 0x70], 0xffffffff
jne 0x403837
mov dword [ebp - 0x10], 0
jmp 0x40624e
push edi
sub edi, eax
xor edi, dword [ebp - 0xc]
xor edi, dword [ebp - 0xc]
sub edi, 3
add edi, dword [ebp - 0x14]
pop edi
cmp dword [ebp - 0x80], 0
jne 0x403876
lea eax, [ebp - 0x88]
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x80], 1
mov eax, dword [ebp - 0x30]
mov cl, byte [eax + 0x88]
mov byte [ebp - 0x88], cl
cmp dword [ebp - 0x70], 0xfffffffe
jne 0x403aa9
jmp 0x403888
mov al, 0
push ebx
pop ebx
cmp dword [ebp - 0x28], 0
mov byte [ebp - 0x111], al
jbe 0x4038b1
push eax
pop eax
cmp dword [ebp - 0x40], 0x40
setl al
mov byte [ebp - 0x111], al
mov al, byte [ebp - 0x111]
test al, 1
jne 0x4038c4
jmp 0x403913
push esi
pop esi
mov eax, dword [ebp - 0x2c]
mov ecx, eax
add ecx, 1
mov dword [ebp - 0x2c], ecx
mov dl, byte [eax]
mov eax, dword [ebp - 0x40]
mov ecx, eax
add ecx, 1
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x3c]
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x24]
add edx, 0x4d
sub edx, 0x4d
mov ecx, dword [eax]
add ecx, 1
mov dword [eax], ecx
mov eax, dword [ebp - 0x28]
add eax, 0xffffffff
mov dword [ebp - 0x28], eax
jmp 0x403888
cmp dword [ebp - 0x40], 5
jge 0x403977
mov eax, 0
mov ecx, 1
mov edx, dword [ebp - 0x40]
add edx, 0x53
add edx, 0x61
add edi, 0x17
sub edi, 0x17
sub edx, 0x61
sub edx, 0x53
mov esi, dword [ebp - 0x30]
push ecx
xor ecx, dword [ebp - 0xc]
or ecx, 0x50
shr ecx, 0x12
pop ecx
mov dword [esi + 0x58], edx
cmp dword [ebp - 0x14], 0
cmovne eax, ecx
mov dword [ebp - 0x10], eax
jmp 0x40624e
push ebx
mov ebx, dword [ebp - 0x18]
xor ebx, dword [ebp - 8]
and ebx, dword [ebp - 0x14]
pop ebx
mov eax, 0x300
mov ecx, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x30]
add ecx, dword [edx + 4]
shl eax, cl
add eax, 0x736
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x90], 0
mov eax, dword [ebp - 0x90]
add edx, 0x39
push edi
pop edi
sub edx, 0x39
cmp eax, dword [ebp - 0x8c]
jae 0x4039ec
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x44]
mov word [ecx + eax*2], 0x400
mov eax, dword [ebp - 0x90]
add eax, 1
mov dword [ebp - 0x90], eax
jmp 0x4039a7
mov dword [ebp - 0x5c], 1
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x54], 1
push edi
mov edi, dword [ebp - 0x18]
add edi, dword [ebp - 8]
xor edi, dword [ebp - 0x10]
mov edi, dword [ebp - 0x10]
or edi, ebx
pop edi
mov dword [ebp - 0x50], 1
push edi
pop edi
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x84], 0
mov eax, dword [ebp - 0x80]
sub eax, 1
mov ecx, dword [ebp - 0x7c]
mov byte [ecx + eax], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xffffffff
mov dword [ebp - 0x94], 0
cmp dword [ebp - 0x94], 5
jge 0x403aa2
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x94]
add eax, 1
mov dword [ebp - 0x94], eax
jmp 0x403a60
mov dword [ebp - 0x70], 0
jmp 0x403aae
mov al, 0
cmp dword [ebp - 0x70], 0
mov byte [ebp - 0x112], al
je 0x403ad2
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x1c]
setb cl
mov byte [ebp - 0x112], cl
mov al, byte [ebp - 0x112]
test al, 1
jne 0x403ae5
jmp 0x403b9e
mov eax, dword [ebp - 0x84]
sub eax, dword [ebp - 0x50]
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x98]
cmp eax, dword [ebp - 0x80]
jb 0x403b27
push edi
add ebx, 0
sub ebx, 0
and edi, esi
sar edi, 0x27
pop edi
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x98]
add ecx, eax
mov dword [ebp - 0x98], ecx
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
push edi
and edi, dword [ebp - 0x14]
xor edi, edx
or edi, edx
or edi, dword [ebp - 0x14]
pop edi
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x7c]
push ecx
pop ecx
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x60]
mov ecx, eax
add ecx, 1
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x20]
mov byte [ecx + eax], dl
push ebx
add ebx, dword [ebp - 0x18]
shl ebx, 0x32
pop ebx
mov eax, dword [ebp - 0x84]
nop
add eax, 1
mov dword [ebp - 0x84], eax
cmp eax, dword [ebp - 0x80]
jne 0x403b8e
mov dword [ebp - 0x84], 0
mov eax, dword [ebp - 0x70]
add eax, 0xffffffff
mov dword [ebp - 0x70], eax
jmp 0x403aae
cmp dword [ebp - 0x84], 0
jne 0x403bc4
mov eax, dword [ebp - 0x80]
sub eax, 1
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
jmp 0x403be4
add ecx, 8
sub ecx, 8
mov eax, dword [ebp - 0x84]
sub eax, 1
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
jmp 0x403be9
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x30]
add ecx, 0x18
sub eax, ecx
add edx, 0xe
push edx
add edx, ebx
xor edx, dword [ebp - 8]
or edx, 0x11
add edx, dword [ebp - 8]
pop edx
sub edx, 0xe
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x40]
sub eax, dword [ebp - 0x9c]
nop
cmp eax, 0x18
jge 0x403dd4
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x40]
sub ecx, eax
add edi, 0x30
push ecx
or ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 0xc]
pop ecx
sub edi, 0x30
mov dword [ebp - 0x40], ecx
cmp dword [ebp - 0x40], 0
jge 0x403c69
mov dword [ebp - 0x10], 1
jmp 0x40624e
mov dword [ebp - 0xa0], 0
mov eax, dword [ebp - 0xa0]
cmp eax, dword [ebp - 0x40]
jge 0x403cb1
mov eax, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x3c]
mov dl, byte [ecx + eax]
mov eax, dword [ebp - 0xa0]
mov ecx, dword [ebp - 0x30]
mov byte [ecx + eax + 0x18], dl
mov eax, dword [ebp - 0xa0]
add eax, 1
mov dword [ebp - 0xa0], eax
jmp 0x403c73
mov eax, dword [ebp - 0x30]
push ebx
xor ebx, dword [ebp - 8]
and ebx, 0x15
sub ebx, ecx
or ebx, eax
pop ebx
add eax, 0x18
mov dword [ebp - 0x3c], eax
mov al, 0
push ecx
pop ecx
cmp dword [ebp - 0x28], 0
mov byte [ebp - 0x113], al
jbe 0x403cf2
cmp dword [ebp - 0x40], 0x40
setl al
mov byte [ebp - 0x113], al
mov al, byte [ebp - 0x113]
test al, 1
jne 0x403d05
jmp 0x403db0
mov eax, dword [ebp - 0x2c]
mov ecx, eax
push edi
pop edi
add ecx, 1
mov dword [ebp - 0x2c], ecx
mov dl, byte [eax]
mov eax, dword [ebp - 0x40]
mov ecx, eax
add edx, 0x33
push edx
and edx, ebx
mov edx, ebx
nop
pop edx
sub edx, 0x33
add ecx, 1
add edx, 0x5a
add edi, 0x3e
push ecx
or ecx, edx
add ecx, edx
or ecx, dword [ebp - 0x14]
xor ecx, dword [ebp - 8]
xor ecx, ebx
pop ecx
sub edi, 0x3e
sub edx, 0x5a
mov dword [ebp - 0x40], ecx
push eax
sub eax, dword [ebp - 0xc]
xor eax, dword [ebp - 0xc]
sub eax, ecx
sub eax, edx
mov eax, edi
pop eax
mov ecx, dword [ebp - 0x3c]
push edx
xor edx, dword [ebp - 0x10]
and edx, dword [ebp - 0xc]
or edx, 0x45
pop edx
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
push edi
add edi, esi
sub edi, edx
xor edi, dword [ebp - 0x10]
and edi, ecx
pop edi
add ecx, 1
mov dword [eax], ecx
mov eax, dword [ebp - 0x28]
push eax
or eax, dword [ebp - 0x14]
or eax, dword [ebp - 0xc]
pop eax
add eax, 0xffffffff
mov dword [ebp - 0x28], eax
jmp 0x403ccb
cmp dword [ebp - 0x40], 0x18
jge 0x403dcf
cmp dword [ebp - 0x14], 0
jne 0x403dcf
jmp 0x40603a
jmp 0x403dd4
push esi
xor esi, ecx
and esi, ecx
sub esi, edi
add esi, dword [ebp - 8]
and esi, dword [ebp - 8]
pop esi
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x1c]
jb 0x403df3
jmp 0x40603a
mov eax, dword [ebp - 0x60]
add eax, dword [ebp - 0x74]
and eax, dword [ebp - 0x64]
mov dword [ebp - 0xac], eax
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x48]
shl ecx, 4
shl ecx, 1
add eax, ecx
mov ecx, dword [ebp - 0xac]
shl ecx, 1
add eax, ecx
add esi, 0x51
push eax
or eax, 0x5b
add eax, esi
xor eax, 7
sub eax, esi
pop eax
sub esi, 0x51
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x403e9c
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
add eax, 0x32
add edx, 0x36
push ebx
and ebx, dword [ebp - 0x10]
or ebx, edx
pop ebx
sub edx, 0x36
sub eax, 0x32
mov edx, ecx
add edx, 0x59
sub edx, 0x59
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4045cc
add ecx, 0x20
sub ecx, 0x20
mov eax, 8
add esi, 1
sub esi, 1
mov ecx, 0x800
mov dword [ebp - 0xb0], 1
mov edx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0xa4]
movzx edx, word [edx]
sub ecx, edx
sar ecx, 5
push edi
mov edi, dword [ebp - 0x10]
sub edi, esi
pop edi
mov edx, dword [ebp - 0xa4]
movzx esi, word [edx]
add esi, ecx
mov di, si
add ecx, 0x41
push esi
or esi, 0x54
add esi, 0x62
sub esi, edx
or esi, ebx
pop esi
sub ecx, 0x41
mov word [edx], di
mov ecx, dword [ebp - 0x44]
add ecx, 0xe6c
mov edx, dword [ebp - 0x60]
add edx, dword [ebp - 0x74]
and edx, dword [ebp - 0x68]
mov esi, dword [ebp - 0x6c]
mov dword [ebp - 0x118], ecx
mov ecx, esi
shl edx, cl
movzx esi, byte [ebp - 0x49]
sub eax, dword [ebp - 0x6c]
mov ecx, eax
sar esi, cl
add edx, esi
add ebx, 0x5b
sub ebx, 0x5b
imul eax, edx, 0x300
shl eax, 1
mov edx, dword [ebp - 0x118]
add eax, 0x31
add esi, 0x12
push ebx
pop ebx
sub esi, 0x12
sub eax, 0x31
add edx, eax
mov dword [ebp - 0xa4], edx
add edi, 0x21
nop
sub edi, 0x21
cmp dword [ebp - 0x48], 7
jl 0x4042bf
add esi, 7
add esi, 0x60
add edx, 0x13
sub edx, 0x13
sub esi, 0x60
sub esi, 7
mov eax, dword [ebp - 0x84]
sub eax, dword [ebp - 0x50]
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0xb8]
cmp eax, dword [ebp - 0x80]
jb 0x404015
mov eax, dword [ebp - 0x80]
push ecx
pop ecx
mov ecx, dword [ebp - 0xb8]
nop
add ecx, eax
mov dword [ebp - 0xb8], ecx
mov eax, dword [ebp - 0xb8]
mov ecx, dword [ebp - 0x7c]
movzx eax, byte [ecx + eax]
mov dword [ebp - 0xb4], eax
mov eax, dword [ebp - 0xb4]
shl eax, 1
mov dword [ebp - 0xb4], eax
push ebx
xor ebx, edx
xor ebx, esi
or ebx, dword [ebp - 0x10]
and ebx, dword [ebp - 0x10]
pop ebx
mov eax, dword [ebp - 0xb4]
and eax, 0x100
push edi
mov edi, ebx
mov edi, esi
or edi, edx
sub edi, ebx
pop edi
mov dword [ebp - 0xbc], eax
add edi, 5
sub edi, 5
mov eax, dword [ebp - 0xa4]
add ebx, 0x17
push ebx
add ebx, esi
or ebx, edx
xor ebx, dword [ebp - 0x14]
shl ebx, 0x48
pop ebx
sub ebx, 0x17
add eax, 0x200
mov ecx, dword [ebp - 0xbc]
shl ecx, 1
push ecx
xor ecx, edi
xor ecx, dword [ebp - 0x18]
mov ecx, ebx
add ecx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x18]
pop ecx
add eax, ecx
mov ecx, dword [ebp - 0xb0]
shl ecx, 1
add eax, ecx
push ecx
pop ecx
mov dword [ebp - 0xc0], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4040ff
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add ebx, 0x45
push esi
or esi, dword [ebp - 0x18]
mov esi, edx
pop esi
sub ebx, 0x45
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
add esi, 0x27
sub esi, 0x27
mov ecx, dword [ebp - 0xc0]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
push ebx
pop ebx
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4041df
add edx, 0x44
add ebx, 6
add esi, 0x11
add ecx, 0x44
sub ecx, 0x44
sub esi, 0x11
sub ebx, 6
sub edx, 0x44
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
push esi
pop esi
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xc0]
add ecx, 0x19
add esi, 0x1c
sub esi, 0x1c
sub ecx, 0x19
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
push ebx
or ebx, edi
mov ebx, ecx
shr ebx, 0x2c
mov ebx, eax
pop ebx
mov ecx, dword [ebp - 0xc0]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xb0]
shl eax, 1
mov dword [ebp - 0xb0], eax
cmp dword [ebp - 0xbc], 0
je 0x4041da
jmp 0x4042ba
jmp 0x4042a5
add eax, 0x43
push ecx
or ecx, dword [ebp - 0xc]
add ecx, edi
xor ecx, dword [ebp - 0x10]
sub ecx, edx
sub ecx, dword [ebp - 8]
pop ecx
sub eax, 0x43
mov eax, dword [ebp - 0xa8]
add ebx, 0x14
add ecx, 0x12
push edi
or edi, dword [ebp - 8]
add edi, dword [ebp - 0x10]
pop edi
sub ecx, 0x12
sub ebx, 0x14
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
nop
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xc0]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xc0]
movzx edx, word [ecx]
sub edx, eax
add eax, 0x29
push edi
mov edi, eax
and edi, eax
pop edi
sub eax, 0x29
mov si, dx
mov word [ecx], si
add edx, 0x17
push eax
pop eax
sub edx, 0x17
mov eax, dword [ebp - 0xb0]
add eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
cmp dword [ebp - 0xbc], 0
jne 0x4042a0
jmp 0x4042ba
jmp 0x4042a5
jmp 0x4042aa
cmp dword [ebp - 0xb0], 0x100
jl 0x404028
jmp 0x4042bf
jmp 0x4042c4
cmp dword [ebp - 0xb0], 0x100
jge 0x404498
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xb0]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xc4], eax
add ecx, 0x23
sub ecx, 0x23
cmp dword [ebp - 0x34], 0x1000000
jae 0x404330
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
push ebx
sub ebx, dword [ebp - 0x14]
xor ebx, ecx
pop ebx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xc4]
movzx ecx, word [ecx]
push eax
sub eax, edx
add ecx, 0x1d
add eax, 0x41
sub eax, 0x41
sub ecx, 0x1d
mov eax, dword [ebp - 0xc]
pop eax
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4043e6
mov eax, 0x800
add eax, 0x31
add esi, 0x13
push esi
or esi, eax
or esi, dword [ebp - 0x14]
sar esi, 0x44
pop esi
sub esi, 0x13
sub eax, 0x31
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
nop
mov ecx, dword [ebp - 0xc4]
movzx ecx, word [ecx]
add eax, 0x39
sub eax, 0x39
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xc4]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xb0]
shl eax, 1
mov dword [ebp - 0xb0], eax
jmp 0x404493
push edi
or edi, dword [ebp - 0xc]
sar edi, 0x3a
sub edi, eax
xor edi, edx
pop edi
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
push ebx
or ebx, ecx
or ebx, edi
sub ebx, dword [ebp - 8]
pop ebx
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xc4]
movzx eax, word [eax]
sar eax, 5
add esi, 0x44
add ecx, 0x41
add ecx, 0x4c
add ebx, 0x3a
sub ebx, 0x3a
sub ecx, 0x4c
sub ecx, 0x41
sub esi, 0x44
mov ecx, dword [ebp - 0xc4]
movzx edx, word [ecx]
sub edx, eax
add ecx, 0x26
sub ecx, 0x26
mov si, dx
push edi
sub edi, ebx
and edi, esi
mov edi, edx
sub edi, ecx
mov edi, edx
pop edi
mov word [ecx], si
mov eax, dword [ebp - 0xb0]
add eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jmp 0x4042c4
mov eax, dword [ebp - 0xb0]
mov cl, al
mov byte [ebp - 0x49], cl
mov cl, byte [ebp - 0x49]
push edi
xor edi, ecx
xor edi, dword [ebp - 8]
add edi, esi
and edi, edx
pop edi
mov eax, dword [ebp - 0x60]
nop
mov edx, eax
add edx, 1
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x20]
mov byte [edx + eax], cl
add esi, 0x1e
push esi
xor esi, ebx
mov esi, dword [ebp - 8]
pop esi
sub esi, 0x1e
mov eax, dword [ebp - 0x78]
add edx, 9
sub edx, 9
cmp eax, dword [ebp - 0x80]
jae 0x404513
push edx
shr edx, 0x24
mov edx, dword [ebp - 0x10]
pop edx
mov eax, dword [ebp - 0x78]
push ecx
and ecx, dword [ebp - 0x10]
sub ecx, edx
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x14]
sub ecx, ebx
pop ecx
add eax, 1
mov dword [ebp - 0x78], eax
mov al, byte [ebp - 0x49]
mov ecx, dword [ebp - 0x84]
mov edx, dword [ebp - 0x7c]
add eax, 0x1a
push ebx
pop ebx
sub eax, 0x1a
mov byte [edx + ecx], al
mov ecx, dword [ebp - 0x84]
add ecx, 1
push edx
pop edx
mov dword [ebp - 0x84], ecx
cmp ecx, dword [ebp - 0x80]
jne 0x404557
mov dword [ebp - 0x84], 0
push edi
pop edi
cmp dword [ebp - 0x48], 4
jge 0x404572
mov dword [ebp - 0x48], 0
jmp 0x4045c7
cmp dword [ebp - 0x48], 0xa
jge 0x4045b5
mov eax, dword [ebp - 0x48]
push eax
add ebx, 0x21
push edi
sub edi, 0x24
xor edi, dword [ebp - 8]
and edi, dword [ebp - 0x14]
pop edi
sub ebx, 0x21
and eax, edi
or eax, dword [ebp - 0x14]
xor eax, esi
sub eax, dword [ebp - 0x14]
pop eax
sub eax, 3
mov dword [ebp - 0x48], eax
jmp 0x4045c2
mov eax, dword [ebp - 0x48]
push esi
pop esi
sub eax, 6
mov dword [ebp - 0x48], eax
jmp 0x4045c7
jmp 0x406035
mov eax, dword [ebp - 0xa8]
push edi
and edi, dword [ebp - 0x18]
or edi, 0xa
or edi, edx
pop edi
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 0x34], ecx
add eax, 0x42
sub eax, 0x42
mov eax, dword [ebp - 0xa8]
add esi, 5
add eax, 0x16
add edx, 0x21
push edx
pop edx
sub edx, 0x21
sub eax, 0x16
sub esi, 5
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xa4]
movzx eax, word [eax]
sar eax, 5
add esi, 0x26
push edi
pop edi
sub esi, 0x26
mov ecx, dword [ebp - 0xa4]
push ebx
pop ebx
movzx edx, word [ecx]
add edx, 0x3e
add esi, 0x44
add ecx, 0x10
push ecx
and ecx, dword [ebp - 8]
sub ecx, dword [ebp - 0x14]
or ecx, ebx
pop ecx
sub ecx, 0x10
sub esi, 0x44
sub edx, 0x3e
sub edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x44]
add eax, 0x180
mov ecx, dword [ebp - 0x48]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4046e2
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
add eax, 0x4a
push eax
and eax, dword [ebp - 0xc]
add eax, ecx
mov eax, esi
mov eax, dword [ebp - 0x14]
pop eax
sub eax, 0x4a
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xa4]
add esi, 6
push edi
xor edi, dword [ebp - 0xc]
or edi, dword [ebp - 0x14]
sar edi, 0x1d
add edi, 0x4e
pop edi
sub esi, 6
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
push edx
and edx, ecx
or edx, dword [ebp - 8]
pop edx
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x404800
mov eax, 3
mov ecx, 0
mov edx, 0x800
mov esi, dword [ebp - 0xa8]
add ebx, 0x11
push edx
and edx, esi
xor edx, edi
push edx
pop edx
add edx, eax
sub edx, dword [ebp - 0x10]
pop edx
sub ebx, 0x11
mov dword [ebp - 0x34], esi
mov esi, dword [ebp - 0xa4]
add edi, 0x59
sub edi, 0x59
movzx esi, word [esi]
push ecx
or ecx, dword [ebp - 0x10]
add edx, 7
sub edx, 7
or ecx, edi
pop ecx
sub edx, esi
sar edx, 5
mov esi, dword [ebp - 0xa4]
movzx edi, word [esi]
add edi, edx
add eax, 0x47
add ebx, 0x29
sub ebx, 0x29
sub eax, 0x47
mov bx, di
mov word [esi], bx
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x5c], edx
push ebx
pop ebx
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], edx
cmp dword [ebp - 0x48], 7
cmovl eax, ecx
add ebx, 0x23
add ebx, 0x36
sub ebx, 0x36
sub ebx, 0x23
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
add eax, 0x664
mov dword [ebp - 0xa4], eax
jmp 0x4050f5
mov eax, dword [ebp - 0xa8]
add edx, 0x1c
push ecx
push ecx
pop ecx
mov ecx, dword [ebp - 0xc]
sar ecx, 0x4e
pop ecx
sub edx, 0x1c
mov ecx, dword [ebp - 0x34]
add edx, 0x4a
add esi, 0x47
sub esi, 0x47
sub edx, 0x4a
sub ecx, eax
mov dword [ebp - 0x34], ecx
add ecx, 0x34
sub ecx, 0x34
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
add ebx, 0x56
nop
sub ebx, 0x56
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xa4]
movzx eax, word [eax]
sar eax, 5
push esi
xor esi, dword [ebp - 0x14]
mov esi, edi
add ebx, 0x50
push ecx
sub ecx, 0x17
xor ecx, dword [ebp - 0x10]
or ecx, edi
add ecx, dword [ebp - 0x18]
xor ecx, esi
pop ecx
sub ebx, 0x50
sub esi, ecx
mov esi, ecx
pop esi
mov ecx, dword [ebp - 0xa4]
push eax
push edi
pop edi
xor eax, dword [ebp - 0x14]
pop eax
movzx edx, word [ecx]
sub edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x44]
add ebx, 0x1a
sub ebx, 0x1a
add eax, 0x198
mov ecx, dword [ebp - 0x48]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x404904
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
push edx
pop edx
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
push edx
sub edx, ecx
and edx, 6
sub edx, esi
mov edx, dword [ebp - 0x14]
xor edx, esi
pop edx
imul eax, ecx
nop
mov dword [ebp - 0xa8], eax
add edx, 0xd
add ecx, 0x14
add ebx, 0x19
push edi
shl edi, 0x52
shl edi, 0x32
pop edi
sub ebx, 0x19
sub ecx, 0x14
sub edx, 0xd
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x404cf6
mov eax, 0x800
push esi
pop esi
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x44]
add eax, 0x1e0
mov ecx, dword [ebp - 0x48]
shl ecx, 4
shl ecx, 1
add eax, ecx
mov ecx, dword [ebp - 0xac]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xa4], eax
add esi, 0x37
sub esi, 0x37
cmp dword [ebp - 0x34], 0x1000000
jae 0x404a1a
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
push edx
and edx, esi
or edx, 0x47
or edx, 0x3e
or edx, ebx
pop edx
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
add ecx, 0x2d
sub ecx, 0x2d
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x404c72
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
add edx, 0x3a
sub edx, 0x3a
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
push ebx
add ebx, dword [ebp - 0x10]
or ebx, edi
pop ebx
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
add eax, 0x1a
push ecx
pop ecx
sub eax, 0x1a
cmp dword [ebp - 0x78], 0
jne 0x404aa8
mov dword [ebp - 0x10], 1
jmp 0x40624e
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x80]
jae 0x404abf
mov eax, dword [ebp - 0x78]
add eax, 1
mov dword [ebp - 0x78], eax
mov eax, 0xb
push esi
pop esi
mov ecx, 9
cmp dword [ebp - 0x48], 7
cmovl eax, ecx
mov dword [ebp - 0x48], eax
add ebx, 0x49
push eax
sar eax, 0x25
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 8]
pop eax
sub ebx, 0x49
mov eax, dword [ebp - 0x84]
sub eax, dword [ebp - 0x50]
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0xc8]
cmp eax, dword [ebp - 0x80]
jb 0x404b31
add ebx, 0x20
push ebx
xor ebx, edx
and ebx, dword [ebp - 0xc]
pop ebx
sub ebx, 0x20
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0xc8]
add ecx, eax
mov dword [ebp - 0xc8], ecx
add edx, 0x41
add ecx, 0x50
add ebx, 0x53
push ecx
add esi, 0x24
sub esi, 0x24
add ecx, esi
pop ecx
sub ebx, 0x53
sub ecx, 0x50
sub edx, 0x41
mov eax, dword [ebp - 0xc8]
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
add eax, 0x47
add edx, 0xa
push eax
and eax, dword [ebp - 8]
sub eax, dword [ebp - 0x18]
xor eax, ecx
xor eax, dword [ebp - 0xc]
xor eax, dword [ebp - 0x14]
pop eax
sub edx, 0xa
sub eax, 0x47
mov dl, byte [ebp - 0x49]
add eax, 0x30
push edx
mov edx, dword [ebp - 8]
and edx, dword [ebp - 0xc]
mov edx, edi
sub edx, dword [ebp - 0x10]
pop edx
sub eax, 0x30
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x7c]
push edx
sub edx, 0x50
nop
xor edx, 0x23
and edx, dword [ebp - 0x18]
mov edx, ecx
pop edx
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x84]
add eax, 1
mov dword [ebp - 0x84], eax
cmp eax, dword [ebp - 0x80]
jne 0x404bfc
mov dword [ebp - 0x84], 0
add ecx, 0x5c
push edx
sub edx, edi
add edx, ecx
and edx, ecx
add edx, dword [ebp - 8]
pop edx
sub ecx, 0x5c
mov al, byte [ebp - 0x49]
add eax, 0x19
add esi, 0xc
push esi
sub esi, dword [ebp - 0x14]
xor esi, dword [ebp - 0x14]
xor esi, dword [ebp - 0x14]
xor esi, dword [ebp - 8]
add esi, dword [ebp - 0x18]
pop esi
sub esi, 0xc
sub eax, 0x19
mov ecx, dword [ebp - 0x60]
mov edx, ecx
add esi, 0x5c
push esi
xor esi, dword [ebp - 0x14]
and esi, dword [ebp - 8]
add esi, dword [ebp - 0x10]
shl esi, 0x42
pop esi
sub esi, 0x5c
add edx, 1
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x20]
mov byte [edx + ecx], al
jmp 0x403be9
mov eax, dword [ebp - 0xa8]
push edi
xor edi, esi
push eax
shr eax, 0x14
or eax, dword [ebp - 0x10]
and eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0xc]
xor eax, dword [ebp - 0x14]
pop eax
pop edi
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
push esi
and esi, 0x50
sub esi, 0x5e
add esi, edi
xor esi, edi
or esi, dword [ebp - 0x10]
pop esi
mov ecx, dword [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
pop eax
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xa4]
movzx eax, word [eax]
sar eax, 5
add edi, 0x3a
push eax
mov eax, dword [ebp - 0x14]
sub eax, esi
pop eax
sub edi, 0x3a
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
nop
sub edx, eax
mov si, dx
mov word [ecx], si
jmp 0x4050c2
mov eax, dword [ebp - 0xa8]
add esi, 0x62
sub esi, 0x62
mov ecx, dword [ebp - 0x34]
push eax
pop eax
sub ecx, eax
nop
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xa4]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
sub edx, eax
mov si, dx
push ebx
add ebx, eax
and ebx, dword [ebp - 0xc]
pop ebx
mov word [ecx], si
add edx, 0x5a
push edx
mov edx, dword [ebp - 0x14]
sub edx, ecx
xor edx, esi
add edx, 0x25
or edx, dword [ebp - 0xc]
pop edx
sub edx, 0x5a
mov eax, dword [ebp - 0x44]
add edx, 0x47
sub edx, 0x47
add eax, 0x1b0
mov ecx, dword [ebp - 0x48]
shl ecx, 1
add ecx, 0x12
add ebx, 0xb
add edx, 0x51
sub edx, 0x51
sub ebx, 0xb
sub ecx, 0x12
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x404de7
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
add ebx, 0x1d
sub ebx, 0x1d
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
add ecx, 0xd
add ecx, 0x2f
add esi, 0x4b
push ecx
mov ecx, edx
add ecx, edi
pop ecx
sub esi, 0x4b
sub ecx, 0x2f
sub ecx, 0xd
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
imul eax, ecx
push esi
pop esi
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x404e9e
add edx, 0x26
push ebx
xor ebx, dword [ebp - 0xc]
and ebx, dword [ebp - 0x18]
and ebx, dword [ebp - 8]
or ebx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x14]
pop ebx
sub edx, 0x26
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xa4]
add ecx, 0x2b
sub ecx, 0x2b
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0xcc], eax
jmp 0x4050b3
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
push esi
sub esi, dword [ebp - 0x18]
nop
and esi, 0x41
xor esi, dword [ebp - 0x14]
or esi, dword [ebp - 0x18]
pop esi
sub ecx, eax
mov dword [ebp - 0x34], ecx
push edx
xor edx, eax
mov edx, ebx
sar edx, 0xd
and edx, ecx
pop edx
mov eax, dword [ebp - 0xa8]
push edx
xor edx, 0x27
xor edx, dword [ebp - 8]
and edx, dword [ebp - 8]
xor edx, eax
mov edx, dword [ebp - 8]
pop edx
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xa4]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
push ebx
sub ebx, eax
xor ebx, eax
add ebx, edi
pop ebx
sub edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x44]
add eax, 0x1c8
mov ecx, dword [ebp - 0x48]
shl ecx, 1
add eax, ecx
nop
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x404f83
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
add edi, 0x20
push eax
pop eax
sub edi, 0x20
mov ecx, dword [ebp - 0x3c]
push ebx
pop ebx
mov edx, ecx
add edx, 1
push ebx
add ecx, 0x24
push edi
sub edi, ebx
or edi, dword [ebp - 0x18]
sub edi, ebx
pop edi
sub ecx, 0x24
and ebx, eax
pop ebx
mov dword [ebp - 0x3c], edx
push eax
pop eax
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
add eax, 0x31
add edi, 3
sub edi, 3
sub eax, 0x31
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
push edi
add esi, 0x43
push edi
pop edi
sub esi, 0x43
xor edi, dword [ebp - 0x14]
pop edi
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x405038
add edi, 3
add edx, 0x31
push edi
pop edi
sub edx, 0x31
sub edi, 3
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xa4]
add ebx, 0x58
push edx
pop edx
sub ebx, 0x58
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0xcc], eax
jmp 0x4050ad
mov eax, dword [ebp - 0xa8]
push ebx
pop ebx
mov ecx, dword [ebp - 0x34]
sub ecx, eax
add eax, 0x4d
sub eax, 0x4d
mov dword [ebp - 0x34], ecx
push ecx
and ecx, 0x1d
add ecx, edi
xor ecx, 0x4e
pop ecx
mov eax, dword [ebp - 0xa8]
push edi
pop edi
mov ecx, dword [ebp - 0x38]
push ebx
and ebx, esi
xor ebx, esi
pop ebx
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xa4]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xa4]
push edx
add edx, dword [ebp - 0xc]
xor edx, esi
pop edx
movzx edx, word [ecx]
sub edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0xcc], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0x50], eax
add edi, 0x48
push edx
pop edx
sub edi, 0x48
mov eax, 0xb
mov ecx, 8
cmp dword [ebp - 0x48], 7
cmovl eax, ecx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
add eax, 0xa68
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0xa4]
push esi
and esi, dword [ebp - 0x14]
sub esi, dword [ebp - 0x10]
xor esi, edx
add esi, dword [ebp - 0xc]
pop esi
mov dword [ebp - 0xd8], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x40515a
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
push edx
sub edx, ecx
and edx, edi
or edx, ecx
and edx, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
pop edx
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add esi, 0x1b
sub esi, 0x1b
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
add edi, 0x55
nop
sub edi, 0x55
mov ecx, dword [ebp - 0xd8]
movzx ecx, word [ecx]
push esi
xor esi, 0x2b
or esi, 0x28
xor esi, eax
pop esi
imul eax, ecx
push ebx
add ebx, edx
add ebx, eax
shr ebx, 0x60
pop ebx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
nop
cmp eax, dword [ebp - 0xa8]
jae 0x40522e
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
add edx, 0x3a
sub edx, 0x3a
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xd8]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xd8]
push edx
pop edx
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xa4]
push ebx
xor ebx, esi
sub ebx, eax
sar ebx, 0x52
mov ebx, edi
pop ebx
add eax, 4
mov ecx, dword [ebp - 0xac]
shl ecx, 3
shl ecx, 1
push eax
sar eax, 1
xor eax, dword [ebp - 0x10]
pop eax
add eax, ecx
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0xd0], 3
jmp 0x405477
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
nop
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xd8]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xd8]
add edi, 0x34
sub edi, 0x34
movzx edx, word [ecx]
sub edx, eax
push ebx
xor ebx, edi
sub ebx, dword [ebp - 0x14]
and ebx, dword [ebp - 8]
and ebx, 0x52
pop ebx
mov si, dx
add eax, 0x5b
push edx
add edx, eax
sub edx, dword [ebp - 8]
pop edx
sub eax, 0x5b
mov word [ecx], si
mov eax, dword [ebp - 0xa4]
add eax, 2
mov dword [ebp - 0xd8], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x40530c
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
push eax
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x14]
xor eax, edx
pop eax
mov ecx, dword [ebp - 0x3c]
add ecx, 0x13
push edi
sar edi, 0x18
xor edi, dword [ebp - 8]
pop edi
sub ecx, 0x13
mov edx, ecx
add ebx, 0x45
sub ebx, 0x45
add edx, 1
mov dword [ebp - 0x3c], edx
push ebx
shr ebx, 0x3d
add ebx, dword [ebp - 0x10]
pop ebx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xd8]
movzx ecx, word [ecx]
imul eax, ecx
push esi
mov esi, ecx
and esi, dword [ebp - 0xc]
xor esi, dword [ebp - 0xc]
mov esi, dword [ebp - 0x10]
add esi, 0x52
pop esi
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
push ebx
pop ebx
cmp eax, dword [ebp - 0xa8]
jae 0x4053eb
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xd8]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xd8]
add ebx, 0x47
push ebx
mov ebx, esi
mov ebx, ecx
add ebx, esi
sub ebx, dword [ebp - 0x14]
or ebx, dword [ebp - 0x18]
pop ebx
sub ebx, 0x47
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
add ebx, 0x19
add edx, 0xb
push ebx
mov ebx, esi
add ebx, dword [ebp - 0x14]
or ebx, dword [ebp - 0x10]
pop ebx
sub edx, 0xb
sub ebx, 0x19
mov eax, dword [ebp - 0xa4]
push esi
pop esi
add eax, 0x104
mov ecx, dword [ebp - 0xac]
shl ecx, 3
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], 8
mov dword [ebp - 0xd0], 3
jmp 0x405472
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
add edx, 0
push eax
mov eax, esi
and eax, edi
add eax, edi
sub eax, 0x20
shl eax, 0x28
pop eax
sub edx, 0
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xd8]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xd8]
movzx edx, word [ecx]
sub edx, eax
mov si, dx
mov word [ecx], si
add ecx, 3
sub ecx, 3
mov eax, dword [ebp - 0xa4]
add eax, 0x204
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], 0x10
mov dword [ebp - 0xd0], 8
jmp 0x405477
mov eax, dword [ebp - 0xd0]
mov dword [ebp - 0xdc], eax
mov dword [ebp - 0x70], 1
mov eax, dword [ebp - 0xd8]
mov ecx, dword [ebp - 0x70]
shl ecx, 1
push ecx
sub ecx, ebx
or ecx, dword [ebp - 0xc]
pop ecx
add eax, ecx
add eax, 0x32
nop
sub eax, 0x32
mov dword [ebp - 0xe0], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4054fc
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edi, 0x44
sub edi, 0x44
add edx, 1
add esi, 0x41
sub esi, 0x41
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xe0]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x405597
push ecx
add ecx, edi
add ecx, dword [ebp - 8]
pop ecx
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xe0]
push eax
sub eax, ecx
xor eax, 0x1b
add eax, edx
pop eax
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xe0]
push eax
pop eax
movzx edx, word [ecx]
add edx, 0x26
add esi, 0x48
add edx, 0x59
sub edx, 0x59
sub esi, 0x48
sub edx, 0x26
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x70]
shl eax, 1
mov dword [ebp - 0x70], eax
jmp 0x40563d
mov eax, dword [ebp - 0xa8]
push edx
pop edx
mov ecx, dword [ebp - 0x34]
add ebx, 0x41
sub ebx, 0x41
sub ecx, eax
mov dword [ebp - 0x34], ecx
push edi
pop edi
mov eax, dword [ebp - 0xa8]
push esi
sar esi, 0x63
or esi, dword [ebp - 0x18]
shl esi, 3
sub esi, dword [ebp - 0x18]
pop esi
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xe0]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xe0]
add edi, 0xf
sub edi, 0xf
movzx edx, word [ecx]
add eax, 0x10
push eax
shr eax, 0x3e
shl eax, 8
and eax, dword [ebp - 0x14]
and eax, esi
mov eax, ecx
pop eax
sub eax, 0x10
sub edx, eax
mov si, dx
mov word [ecx], si
add edi, 6
push ecx
pop ecx
sub edi, 6
mov eax, dword [ebp - 0x70]
add eax, dword [ebp - 0x70]
add edx, 0x21
sub edx, 0x21
add eax, 1
mov dword [ebp - 0x70], eax
jmp 0x405642
add edi, 0x20
push eax
mov eax, esi
and eax, ebx
sub eax, dword [ebp - 0x18]
xor eax, edx
sar eax, 0x29
pop eax
sub edi, 0x20
mov eax, dword [ebp - 0xdc]
add eax, 0xffffffff
push ecx
xor ecx, dword [ebp - 0xc]
sub ecx, esi
xor ecx, dword [ebp - 0x10]
add ecx, 6
pop ecx
mov dword [ebp - 0xdc], eax
cmp eax, 0
jne 0x40548a
mov eax, 1
mov ecx, dword [ebp - 0xd0]
shl eax, cl
push edi
xor edi, dword [ebp - 0x18]
sub edi, 0x40
pop edi
mov edx, dword [ebp - 0x70]
sub edx, eax
mov dword [ebp - 0x70], edx
mov eax, dword [ebp - 0xd4]
mov edx, dword [ebp - 0x70]
add ebx, 5
push edx
or edx, eax
xor edx, edi
shr edx, 0x47
pop edx
sub ebx, 5
add edx, eax
mov dword [ebp - 0x70], edx
add edx, 0x10
add ecx, 0x38
push ebx
add edx, 0x1a
push eax
pop eax
sub edx, 0x1a
and ebx, dword [ebp - 0x10]
and ebx, dword [ebp - 0x18]
pop ebx
sub ecx, 0x38
sub edx, 0x10
cmp dword [ebp - 0x48], 4
jge 0x405e75
push esi
add esi, dword [ebp - 0x14]
sub esi, edx
mov esi, dword [ebp - 0x10]
and esi, dword [ebp - 0x18]
or esi, 0x2c
pop esi
mov eax, dword [ebp - 0x48]
add ecx, 0
add eax, 0x56
add edi, 0x46
sub edi, 0x46
sub eax, 0x56
sub ecx, 0
add eax, 7
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
add eax, 0x360
add ebx, 0x37
push edi
pop edi
sub ebx, 0x37
cmp dword [ebp - 0x70], 4
mov dword [ebp - 0x11c], eax
jge 0x40577f
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x120], eax
jmp 0x40578f
mov eax, 3
mov dword [ebp - 0x120], eax
jmp 0x40578f
mov eax, dword [ebp - 0x120]
shl eax, 6
shl eax, 1
mov ecx, dword [ebp - 0x11c]
add ecx, eax
mov dword [ebp - 0xa4], ecx
mov dword [ebp - 0xe8], 6
mov dword [ebp - 0xe4], 1
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xe4]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xec], eax
add eax, 1
push esi
or esi, ecx
or esi, edx
sub esi, 7
pop esi
sub eax, 1
cmp dword [ebp - 0x34], 0x1000000
jae 0x405820
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
push esi
pop esi
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
nop
mov ecx, dword [ebp - 0xec]
movzx ecx, word [ecx]
add ebx, 0x62
sub ebx, 0x62
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4058ce
add edx, 0x10
sub edx, 0x10
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xec]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
push edx
or edx, ebx
or edx, esi
push eax
and eax, dword [ebp - 8]
or eax, 0x4a
pop eax
and edx, esi
and edx, esi
pop edx
mov ecx, dword [ebp - 0xec]
add edx, 0x1b
add ecx, 0x19
sub ecx, 0x19
sub edx, 0x1b
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xe4]
shl eax, 1
mov dword [ebp - 0xe4], eax
jmp 0x405978
mov eax, dword [ebp - 0xa8]
add edi, 0xb
sub edi, 0xb
mov ecx, dword [ebp - 0x34]
add ecx, 0x3c
add edi, 0x50
add edx, 0x3a
push edi
or edi, edx
and edi, ebx
sub edi, dword [ebp - 8]
add edi, dword [ebp - 0xc]
pop edi
sub edx, 0x3a
sub edi, 0x50
sub ecx, 0x3c
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xec]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xec]
movzx edx, word [ecx]
sub edx, eax
mov si, dx
mov word [ecx], si
add ecx, 0xb
push eax
or eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x14]
sub eax, 0x14
and eax, ecx
pop eax
sub ecx, 0xb
mov eax, dword [ebp - 0xe4]
add eax, dword [ebp - 0xe4]
push edx
pop edx
add eax, 1
mov dword [ebp - 0xe4], eax
jmp 0x40597d
mov eax, dword [ebp - 0xe8]
add eax, 0xffffffff
add edx, 0x1b
add eax, 0x4c
sub eax, 0x4c
sub edx, 0x1b
mov dword [ebp - 0xe8], eax
cmp eax, 0
jne 0x4057bd
push edx
xor edx, ebx
mov edx, dword [ebp - 8]
mov edx, dword [ebp - 0x18]
pop edx
mov eax, dword [ebp - 0xe4]
push ecx
pop ecx
sub eax, 0x40
mov dword [ebp - 0xe4], eax
cmp dword [ebp - 0xe4], 4
jl 0x405e2b
mov eax, dword [ebp - 0xe4]
sar eax, 1
sub eax, 1
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0xe4]
push ecx
and ecx, eax
push esi
and esi, dword [ebp - 0xc]
or esi, dword [ebp - 0x10]
sub esi, eax
sub esi, dword [ebp - 8]
or esi, ecx
pop esi
sub ecx, dword [ebp - 0x18]
and ecx, dword [ebp - 0x10]
pop ecx
and eax, 1
or eax, 2
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0xe4], 0xe
jge 0x405a7a
mov eax, 0
mov ecx, dword [ebp - 0xf0]
mov edx, dword [ebp - 0x50]
shl edx, cl
mov dword [ebp - 0x50], edx
add edx, 0x30
sub edx, 0x30
mov edx, dword [ebp - 0x44]
add edx, 0x560
mov esi, dword [ebp - 0x50]
shl esi, 1
add edx, esi
sub eax, dword [ebp - 0xe4]
shl eax, 1
add edx, eax
add edx, 0xfffffffe
mov dword [ebp - 0xa4], edx
jmp 0x405ba6
mov eax, dword [ebp - 0xf0]
sub eax, 4
mov dword [ebp - 0xf0], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x405ad7
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
mov ecx, dword [ebp - 0x3c]
add edi, 0x4a
sub edi, 0x4a
mov edx, ecx
add edx, 1
add edi, 4
sub edi, 4
mov dword [ebp - 0x3c], edx
push edi
pop edi
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 1
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x50]
shl eax, 1
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x38]
push ecx
sub ecx, dword [ebp - 0x14]
xor ecx, eax
add ecx, dword [ebp - 0x14]
and ecx, 0x33
pop ecx
cmp eax, dword [ebp - 0x34]
jb 0x405b5e
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
push esi
add esi, edi
push ebx
sub ebx, edi
xor ebx, edi
sub ebx, dword [ebp - 8]
or ebx, 0x23
pop ebx
mov esi, dword [ebp - 0x10]
add esi, dword [ebp - 0xc]
and esi, 0x58
pop esi
sub ecx, eax
mov dword [ebp - 0x38], ecx
add ecx, 0x45
add edi, 0x18
add ecx, 0x5c
sub ecx, 0x5c
sub edi, 0x18
sub ecx, 0x45
mov eax, dword [ebp - 0x50]
or eax, 1
mov dword [ebp - 0x50], eax
jmp 0x405b63
mov eax, dword [ebp - 0xf0]
add eax, 0xffffffff
push esi
pop esi
mov dword [ebp - 0xf0], eax
push edi
pop edi
cmp eax, 0
jne 0x405a8b
push edx
pop edx
mov eax, dword [ebp - 0x44]
add eax, 0x644
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp - 0x50]
shl eax, 4
mov dword [ebp - 0x50], eax
mov dword [ebp - 0xf0], 4
mov dword [ebp - 0xf4], 1
mov dword [ebp - 0xf8], 1
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xf8]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xfc], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x405c24
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
add ebx, 0x5c
push esi
sub esi, dword [ebp - 0x14]
and esi, edi
pop esi
sub ebx, 0x5c
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
push ebx
pop ebx
mov dword [ebp - 0x3c], edx
add edi, 0x29
sub edi, 0x29
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
add edi, 0x5c
push ebx
sub ebx, 0x2c
sub ebx, edi
xor ebx, dword [ebp - 0x18]
pop ebx
sub edi, 0x5c
mov ecx, dword [ebp - 0xfc]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
add edi, 0x55
push ebx
mov ebx, dword [ebp - 0x10]
sub ebx, edi
or ebx, dword [ebp - 0x10]
pop ebx
sub edi, 0x55
cmp eax, dword [ebp - 0xa8]
jae 0x405ce0
add esi, 1
push eax
mov eax, ebx
and eax, dword [ebp - 0x10]
or eax, edx
pop eax
sub esi, 1
mov eax, 0x800
push edi
mov edi, dword [ebp - 0x14]
xor edi, dword [ebp - 0xc]
mov edi, dword [ebp - 0x10]
mov edi, dword [ebp - 0x14]
pop edi
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xfc]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xfc]
movzx edx, word [ecx]
push eax
pop eax
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xf8]
shl eax, 1
mov dword [ebp - 0xf8], eax
jmp 0x405df0
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
push esi
pop esi
sub ecx, eax
add ebx, 0x1a
push eax
xor eax, dword [ebp - 8]
xor eax, dword [ebp - 0x10]
add eax, edi
or eax, esi
mov eax, edi
pop eax
sub ebx, 0x1a
mov dword [ebp - 0x34], ecx
add edi, 0x3e
push ecx
sar ecx, 6
sub ecx, dword [ebp - 8]
and ecx, ebx
sub ecx, dword [ebp - 0x18]
sub ecx, esi
pop ecx
sub edi, 0x3e
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xfc]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xfc]
movzx edx, word [ecx]
sub edx, eax
push eax
pop eax
mov si, dx
add edi, 0x38
add ebx, 2
add edi, 0x16
push ecx
pop ecx
sub edi, 0x16
sub ebx, 2
sub edi, 0x38
mov word [ecx], si
mov eax, dword [ebp - 0xf8]
add eax, dword [ebp - 0xf8]
add ecx, 0x40
add edi, 0x12
sub edi, 0x12
sub ecx, 0x40
add eax, 1
add ecx, 0x26
push eax
pop eax
sub ecx, 0x26
mov dword [ebp - 0xf8], eax
add edx, 0x38
push eax
add eax, ecx
or eax, dword [ebp - 0xc]
pop eax
sub edx, 0x38
mov eax, dword [ebp - 0xf4]
add eax, 0x4e
add esi, 0x2e
push ebx
pop ebx
sub esi, 0x2e
sub eax, 0x4e
mov ecx, dword [ebp - 0x50]
or ecx, eax
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp - 0xf4]
shl eax, 1
mov dword [ebp - 0xf4], eax
push esi
sub esi, ecx
and esi, dword [ebp - 0x18]
and esi, dword [ebp - 0x18]
pop esi
mov eax, dword [ebp - 0xf0]
nop
add eax, 0xffffffff
mov dword [ebp - 0xf0], eax
cmp eax, 0
jne 0x405bba
jmp 0x405e34
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x50], eax
add edi, 0x5a
push edi
pop edi
sub edi, 0x5a
mov eax, dword [ebp - 0x50]
add eax, 1
add edi, 0x40
sub edi, 0x40
mov dword [ebp - 0x50], eax
cmp eax, 0
jne 0x405e70
mov dword [ebp - 0x70], 0xffffffff
jmp 0x40603a
jmp 0x405e75
mov eax, dword [ebp - 0x70]
add eax, 2
mov dword [ebp - 0x70], eax
add edi, 0x57
push ebx
add ebx, dword [ebp - 8]
push ecx
xor ecx, dword [ebp - 0x10]
or ecx, dword [ebp - 0xc]
and ecx, edi
pop ecx
sub ebx, edi
pop ebx
sub edi, 0x57
mov eax, dword [ebp - 0x50]
add ebx, 0xd
sub ebx, 0xd
cmp eax, dword [ebp - 0x78]
jbe 0x405ec1
mov dword [ebp - 0x10], 1
jmp 0x40624e
mov eax, dword [ebp - 0x80]
sub eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x70]
jbe 0x405ee2
mov eax, dword [ebp - 0x70]
push edi
pop edi
mov ecx, dword [ebp - 0x78]
add ecx, eax
mov dword [ebp - 0x78], ecx
jmp 0x405ee8
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x78], eax
jmp 0x405eed
add esi, 0x57
sub esi, 0x57
mov eax, dword [ebp - 0x84]
sub eax, dword [ebp - 0x50]
mov dword [ebp - 0x100], eax
add edi, 4
sub edi, 4
mov eax, dword [ebp - 0x100]
cmp eax, dword [ebp - 0x80]
jb 0x405f4c
push esi
mov esi, dword [ebp - 0x14]
shl esi, 2
xor esi, eax
pop esi
mov eax, dword [ebp - 0x80]
add ecx, 0x46
sub ecx, 0x46
mov ecx, dword [ebp - 0x100]
push esi
pop esi
add ecx, eax
mov dword [ebp - 0x100], ecx
mov eax, dword [ebp - 0x100]
mov ecx, dword [ebp - 0x7c]
push ebx
sar ebx, 0x27
xor ebx, 1
sub ebx, esi
add ebx, dword [ebp - 0x14]
add ebx, eax
pop ebx
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
mov dl, byte [ebp - 0x49]
mov eax, dword [ebp - 0x84]
add edx, 0x5f
push edx
pop edx
sub edx, 0x5f
mov ecx, dword [ebp - 0x7c]
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x84]
add eax, 1
push ebx
and ebx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x10]
or ebx, dword [ebp - 8]
and ebx, dword [ebp - 0x14]
sub ebx, dword [ebp - 0x18]
pop ebx
mov dword [ebp - 0x84], eax
cmp eax, dword [ebp - 0x80]
jne 0x405fbf
mov dword [ebp - 0x84], 0
push edi
pop edi
mov eax, dword [ebp - 0x70]
push eax
pop eax
add eax, 0xffffffff
mov dword [ebp - 0x70], eax
mov cl, byte [ebp - 0x49]
mov eax, dword [ebp - 0x60]
mov edx, eax
add edx, 1
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x20]
mov byte [edx + eax], cl
mov al, 0
add edi, 0x19
push eax
sar eax, 1
add eax, edi
or eax, 0x5a
pop eax
sub edi, 0x19
cmp dword [ebp - 0x70], 0
mov byte [ebp - 0x121], al
je 0x406022
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x1c]
setb cl
mov byte [ebp - 0x121], cl
mov al, byte [ebp - 0x121]
test al, 1
jne 0x405eed
jmp 0x406035
jmp 0x403be9
add ebx, 0x60
add ebx, 0x4e
push esi
or esi, 0x48
or esi, dword [ebp - 0x10]
pop esi
sub ebx, 0x4e
sub ebx, 0x60
cmp dword [ebp - 0x34], 0x1000000
jae 0x4060a6
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
add ecx, 0x16
sub ecx, 0x16
mov ecx, dword [ebp - 0x3c]
push esi
or esi, edx
or esi, dword [ebp - 0x18]
pop esi
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
push esi
pop esi
movzx ecx, byte [ecx]
push ecx
pop ecx
or eax, ecx
mov dword [ebp - 0x38], eax
add esi, 0x62
push eax
pop eax
sub esi, 0x62
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x30]
push edx
pop edx
add ecx, 0x18
sub eax, ecx
mov ecx, dword [ebp - 0x40]
sub ecx, eax
mov dword [ebp - 0x40], ecx
cmp dword [ebp - 0x40], 0
jge 0x4060e5
mov dword [ebp - 0x10], 1
jmp 0x40624e
mov dword [ebp - 0x104], 0
mov eax, dword [ebp - 0x104]
push edx
sub edx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
push edi
add edi, esi
or edi, ebx
add ebx, 0x47
sub ebx, 0x47
pop edi
sub edx, dword [ebp - 0x18]
and edx, dword [ebp - 0x10]
pop edx
cmp eax, dword [ebp - 0x40]
jge 0x40614d
mov eax, dword [ebp - 0x104]
mov ecx, dword [ebp - 0x3c]
mov dl, byte [ecx + eax]
mov eax, dword [ebp - 0x104]
mov ecx, dword [ebp - 0x30]
mov byte [ecx + eax + 0x18], dl
mov eax, dword [ebp - 0x104]
add eax, 1
mov dword [ebp - 0x104], eax
jmp 0x4060ef
push ecx
pop ecx
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x30]
add ebx, 0x53
add edx, 0x1c
sub edx, 0x1c
sub ebx, 0x53
mov dword [ecx + 0x58], eax
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x5c], eax
mov eax, dword [ebp - 0x38]
add esi, 0x3d
sub esi, 0x3d
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x60], eax
mov eax, dword [ebp - 0x84]
add ecx, 0x57
sub ecx, 0x57
mov ecx, dword [ebp - 0x30]
add esi, 0x60
add ebx, 0x62
add eax, 0x47
push esi
and esi, dword [ebp - 0x14]
and esi, eax
pop esi
sub eax, 0x47
sub ebx, 0x62
sub esi, 0x60
mov dword [ecx + 0x64], eax
add edx, 0x4c
push ebx
pop ebx
sub edx, 0x4c
mov eax, dword [ebp - 0x74]
add eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x68], eax
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x6c], eax
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x70], eax
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x74], eax
mov eax, dword [ebp - 0x58]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x78], eax
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x7c], eax
mov eax, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x80], eax
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x84], eax
mov dl, byte [ebp - 0x88]
mov eax, dword [ebp - 0x30]
mov byte [eax + 0x88], dl
mov eax, dword [ebp - 0x60]
mov ecx, dword [ebp - 0x18]
mov dword [ecx], eax
mov dword [ebp - 0x10], 0
mov eax, dword [ebp - 0x10]
add esp, 0x118
pop esi
pop edi
pop ebx
pop ebp
ret