Function at 0x403510
Capabilities:
Authenticate hmac
Encode data using base64
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 ebx, 0x27
add edx, 0xa
push eax
and eax, esi
sar eax, 0x3a
xor eax, ebx
pop eax
sub edx, 0xa
sub ebx, 0x27
mov eax, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
add eax, 0x3f
push eax
and eax, dword [ebp - 0xc]
sub eax, dword [ebp - 8]
push ebx
and ebx, esi
add ebx, edi
sub ebx, dword [ebp - 8]
pop ebx
xor eax, dword [ebp - 8]
or eax, ecx
pop eax
sub eax, 0x3f
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x24]
nop
mov dword [ebp - 0x108], eax
push edi
mov edi, eax
push ebx
pop ebx
add edi, dword [ebp - 0x10]
sub edi, edx
pop edi
mov eax, dword [ebp + 0x20]
push edi
pop edi
mov dword [ebp - 0x10c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x110], eax
mov eax, 1
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x10c]
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x108]
add ecx, 0x11
nop
sub ecx, 0x11
mov dword [ebp - 0x1c], ebx
push esi
shr esi, 9
xor esi, eax
and esi, dword [ebp - 0xc]
pop esi
mov dword [ebp - 0x20], ecx
push ecx
add ecx, dword [ebp - 0xc]
mov ecx, ebx
and ecx, dword [ebp - 0x14]
pop ecx
mov dword [ebp - 0x24], edx
mov ecx, dword [ebp - 0x110]
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x30], esi
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x5c]
push ebx
pop ebx
mov dword [ebp - 0x34], edx
add esi, 0x3f
add ecx, 0x12
push ecx
xor ecx, dword [ebp - 8]
or ecx, dword [ebp - 0x18]
xor ecx, edi
pop ecx
sub ecx, 0x12
sub esi, 0x3f
mov edx, dword [ebp - 0x30]
mov edx, dword [edx + 0x60]
add esi, 0x55
add edi, 0x50
sub edi, 0x50
sub esi, 0x55
mov dword [ebp - 0x38], edx
mov edx, dword [ebp - 0x30]
add edi, 0x1a
add edi, 9
sub edi, 9
sub edi, 0x1a
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
sub edx, 1
mov dword [ebp - 0x64], edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [edx + 4]
shl eax, cl
push eax
pop eax
sub eax, 1
mov dword [ebp - 0x68], eax
add ecx, 0x36
sub ecx, 0x36
mov eax, dword [ebp - 0x30]
mov eax, dword [eax]
push esi
pop esi
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x84]
push edi
pop edi
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x30]
push ecx
sub ecx, eax
add ecx, esi
mov ecx, dword [ebp - 0xc]
sub ecx, eax
or ecx, dword [ebp - 0x10]
pop ecx
mov eax, dword [eax + 0x68]
push eax
pop eax
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]
mov eax, dword [eax + 0x14]
push eax
shl eax, 0x40
mov eax, edi
pop eax
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0xc]
mov dword [ebp - 0x80], eax
push esi
pop esi
mov eax, dword [ebp - 0x30]
mov eax, dword [eax + 0x64]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x24]
mov dword [eax], 0
mov eax, dword [ebp - 0x18]
mov dword [eax], 0
cmp dword [ebp - 0x70], 0xffffffff
jne 0x40375f
mov dword [ebp - 0x10], 0
jmp 0x4063eb
add edx, 0x5b
sub edx, 0x5b
cmp dword [ebp - 0x80], 0
jne 0x403797
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 0x403a8f
jmp 0x4037a9
mov al, 0
cmp dword [ebp - 0x28], 0
mov byte [ebp - 0x111], al
jbe 0x4037ce
cmp dword [ebp - 0x40], 0x40
setl al
mov byte [ebp - 0x111], al
mov al, byte [ebp - 0x111]
test al, 1
jne 0x4037e1
jmp 0x40388b
mov eax, dword [ebp - 0x2c]
mov ecx, eax
push eax
pop eax
add ecx, 1
mov dword [ebp - 0x2c], ecx
add esi, 0x46
add esi, 0x34
sub esi, 0x34
sub esi, 0x46
mov dl, byte [eax]
add esi, 0x5d
push edx
or edx, edi
and edx, edi
shl edx, 0x15
and edx, dword [ebp - 0x18]
and edx, ebx
pop edx
sub esi, 0x5d
mov eax, dword [ebp - 0x40]
add ecx, 0xa
sub ecx, 0xa
mov ecx, eax
push edi
and edi, ecx
sub edi, dword [ebp - 0x10]
add edi, dword [ebp - 0x14]
pop edi
add ecx, 1
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x3c]
mov byte [ecx + eax], dl
add ebx, 0xa
add esi, 0x4e
sub esi, 0x4e
sub ebx, 0xa
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
add ecx, 1
mov dword [eax], ecx
mov eax, dword [ebp - 0x28]
push ecx
add ecx, dword [ebp - 0x10]
add ecx, eax
pop ecx
add eax, 0xffffffff
mov dword [ebp - 0x28], eax
jmp 0x4037a9
cmp dword [ebp - 0x40], 5
jge 0x4038df
mov eax, 0
push edx
add edx, dword [ebp - 0x14]
xor edx, dword [ebp - 0x10]
pop edx
mov ecx, 1
add edx, 0x16
push esi
mov esi, dword [ebp - 0x18]
mov esi, eax
shr esi, 0x2b
add esi, ecx
pop esi
sub edx, 0x16
mov edx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x30]
push ebx
pop ebx
mov dword [esi + 0x58], edx
cmp dword [ebp - 0x14], 0
cmovne eax, ecx
mov dword [ebp - 0x10], eax
jmp 0x4063eb
mov eax, 0x300
mov ecx, dword [ebp - 0x6c]
add edi, 0x12
add edi, 0x4e
add ecx, 0x57
sub ecx, 0x57
sub edi, 0x4e
sub edi, 0x12
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]
cmp eax, dword [ebp - 0x8c]
jae 0x403967
mov eax, dword [ebp - 0x90]
mov ecx, dword [ebp - 0x44]
mov word [ecx + eax*2], 0x400
mov eax, dword [ebp - 0x90]
push edi
or edi, dword [ebp - 0xc]
add edi, dword [ebp - 8]
pop edi
add eax, 1
mov dword [ebp - 0x90], eax
jmp 0x403928
push edx
shl edx, 0x16
xor edx, dword [ebp - 8]
xor edx, edi
pop edx
mov dword [ebp - 0x5c], 1
push eax
or eax, dword [ebp - 0x14]
mov eax, ebx
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x14]
pop eax
mov dword [ebp - 0x58], 1
mov dword [ebp - 0x54], 1
push esi
shl esi, 0x32
or esi, edi
mov esi, dword [ebp - 0x10]
pop esi
mov dword [ebp - 0x50], 1
mov dword [ebp - 0x48], 0
add ebx, 0x1d
add edi, 0x24
push ebx
pop ebx
sub edi, 0x24
sub ebx, 0x1d
mov dword [ebp - 0x74], 0
mov dword [ebp - 0x78], 0
push ecx
or ecx, ebx
add ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 0xc]
pop ecx
mov dword [ebp - 0x84], 0
add esi, 0x63
add ebx, 0x48
add esi, 0x32
push edi
pop edi
sub esi, 0x32
sub ebx, 0x48
sub esi, 0x63
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 0x403a88
mov eax, dword [ebp - 0x38]
shl eax, 8
push edx
shl edx, 0x13
xor edx, dword [ebp - 8]
pop edx
mov ecx, dword [ebp - 0x3c]
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
push esi
add esi, eax
add esi, dword [ebp - 0xc]
add esi, dword [ebp - 0x10]
pop esi
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x94]
add eax, 1
mov dword [ebp - 0x94], eax
jmp 0x403a34
mov dword [ebp - 0x70], 0
jmp 0x403a94
mov al, 0
add edi, 0x39
sub edi, 0x39
cmp dword [ebp - 0x70], 0
mov byte [ebp - 0x112], al
je 0x403ac4
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x1c]
setb cl
mov byte [ebp - 0x112], cl
add ecx, 0x44
sub ecx, 0x44
mov al, byte [ebp - 0x112]
test al, 1
jne 0x403ae3
jmp 0x403c3c
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 0x403b1e
push edi
pop edi
mov eax, dword [ebp - 0x80]
push esi
or esi, eax
and esi, 0x2e
pop esi
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]
add edx, 0x52
sub edx, 0x52
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x7c]
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x60]
mov ecx, eax
add ecx, 1
mov dword [ebp - 0x60], ecx
add ecx, 0x33
add edi, 9
add edx, 2
add edi, 0x27
add eax, 0x3a
add eax, 0x5f
add ecx, 0x63
sub ecx, 0x63
sub eax, 0x5f
sub eax, 0x3a
sub edi, 0x27
sub edx, 2
sub edi, 9
sub ecx, 0x33
mov ecx, dword [ebp - 0x20]
push eax
and eax, esi
add eax, ecx
mov eax, dword [ebp - 8]
shr eax, 0x56
pop eax
mov byte [ecx + eax], dl
add edi, 0x45
sub edi, 0x45
mov eax, dword [ebp - 0x84]
add eax, 1
add ecx, 5
add eax, 0x40
add edx, 0x4c
add eax, 0x4c
sub eax, 0x4c
sub edx, 0x4c
sub eax, 0x40
sub ecx, 5
mov dword [ebp - 0x84], eax
cmp eax, dword [ebp - 0x80]
jne 0x403c16
mov dword [ebp - 0x84], 0
add edi, 0x5b
sub edi, 0x5b
mov eax, dword [ebp - 0x70]
push ebx
and ebx, dword [ebp - 0x14]
and ebx, eax
mov ebx, dword [ebp - 0x14]
pop ebx
add eax, 0xffffffff
mov dword [ebp - 0x70], eax
jmp 0x403a94
push edi
pop edi
cmp dword [ebp - 0x84], 0
jne 0x403c64
mov eax, dword [ebp - 0x80]
sub eax, 1
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
jmp 0x403c78
mov eax, dword [ebp - 0x84]
sub eax, 1
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
jmp 0x403c7d
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x30]
add edi, 0x26
push eax
and eax, 0x19
mov eax, dword [ebp - 0x10]
pop eax
sub edi, 0x26
add ecx, 0x18
add ecx, 4
add edi, 0x54
sub edi, 0x54
sub ecx, 4
sub eax, ecx
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp - 0x40]
sub eax, dword [ebp - 0x9c]
cmp eax, 0x18
jge 0x403e1f
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x40]
sub ecx, eax
push ebx
pop ebx
mov dword [ebp - 0x40], ecx
cmp dword [ebp - 0x40], 0
jge 0x403cfd
mov dword [ebp - 0x10], 1
jmp 0x4063eb
mov dword [ebp - 0xa0], 0
add eax, 0x1a
sub eax, 0x1a
mov eax, dword [ebp - 0xa0]
cmp eax, dword [ebp - 0x40]
jge 0x403d51
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 0x403d07
mov eax, dword [ebp - 0x30]
add eax, 0x18
mov dword [ebp - 0x3c], eax
mov al, 0
cmp dword [ebp - 0x28], 0
mov byte [ebp - 0x113], al
jbe 0x403d81
cmp dword [ebp - 0x40], 0x40
setl al
mov byte [ebp - 0x113], al
mov al, byte [ebp - 0x113]
test al, 1
jne 0x403d94
jmp 0x403df9
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]
add edx, 0x49
push ebx
xor ebx, dword [ebp - 8]
or ebx, dword [ebp - 0x14]
add ebx, esi
shr ebx, 0x59
xor ebx, 0x1e
pop ebx
sub edx, 0x49
mov ecx, eax
add ecx, 1
mov dword [ebp - 0x40], ecx
push edx
pop edx
mov ecx, dword [ebp - 0x3c]
push edi
pop edi
mov byte [ecx + eax], dl
nop
mov eax, dword [ebp - 0x24]
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 0x403d5c
push edi
pop edi
cmp dword [ebp - 0x40], 0x18
jge 0x403e1a
cmp dword [ebp - 0x14], 0
jne 0x403e1a
jmp 0x4061e5
jmp 0x403e1f
mov eax, dword [ebp - 0x60]
cmp eax, dword [ebp - 0x1c]
jb 0x403e30
jmp 0x4061e5
add ecx, 0x3d
add eax, 0x2a
add edx, 0x51
add ecx, 0xc
push esi
add esi, 0x51
or esi, dword [ebp - 0x18]
add esi, dword [ebp - 0x14]
sub esi, eax
add esi, dword [ebp - 0x10]
pop esi
sub ecx, 0xc
sub edx, 0x51
sub eax, 0x2a
sub ecx, 0x3d
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
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x403eec
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 ecx, 0x2f
add edx, 0x50
sub edx, 0x50
sub ecx, 0x2f
mov edx, ecx
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
nop
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
push eax
sub eax, dword [ebp - 8]
sub eax, dword [ebp - 0x18]
pop eax
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4046a9
mov eax, 8
mov ecx, 0x800
mov dword [ebp - 0xb0], 1
mov edx, dword [ebp - 0xa8]
push eax
or eax, dword [ebp - 8]
or eax, esi
add eax, 0x5c
or eax, edi
pop eax
mov dword [ebp - 0x34], edx
add ecx, 0x20
sub ecx, 0x20
mov edx, dword [ebp - 0xa4]
movzx edx, word [edx]
add ebx, 0x40
add esi, 0x50
push ebx
pop ebx
sub esi, 0x50
sub ebx, 0x40
sub ecx, edx
sar ecx, 5
mov edx, dword [ebp - 0xa4]
push edx
or edx, dword [ebp - 0x14]
add edx, eax
xor edx, eax
xor edx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
pop edx
movzx esi, word [edx]
add edi, 4
push ecx
pop ecx
sub edi, 4
add esi, ecx
mov di, si
mov word [edx], di
mov ecx, dword [ebp - 0x44]
push ecx
add ebx, 3
push esi
pop esi
sub ebx, 3
xor ecx, dword [ebp - 0xc]
pop ecx
add ecx, 0xe6c
mov edx, dword [ebp - 0x60]
add edx, dword [ebp - 0x74]
push edi
xor edi, dword [ebp - 0x18]
and edi, esi
push edx
shr edx, 0x51
and edx, 0x56
push ebx
sub ebx, eax
or ebx, 0x3c
xor ebx, dword [ebp - 0xc]
sub ebx, esi
mov ebx, edi
pop ebx
and edx, dword [ebp - 0x18]
mov edx, eax
pop edx
shr edi, 0x2a
pop edi
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]
push edi
pop edi
sub eax, dword [ebp - 0x6c]
mov ecx, eax
sar esi, cl
add edx, esi
push esi
sub esi, ebx
or esi, ebx
or esi, edi
and esi, dword [ebp - 0xc]
mov esi, eax
pop esi
imul eax, edx, 0x300
shl eax, 1
mov edx, dword [ebp - 0x118]
add ecx, 0x4a
sub ecx, 0x4a
add edx, eax
mov dword [ebp - 0xa4], edx
push esi
mov esi, dword [ebp - 0x14]
or esi, dword [ebp - 0x10]
pop esi
cmp dword [ebp - 0x48], 7
jl 0x404338
nop
mov eax, dword [ebp - 0x84]
sub eax, dword [ebp - 0x50]
mov dword [ebp - 0xb8], eax
push edi
and edi, 0x11
mov edi, ebx
and edi, 0x36
and edi, eax
add ebx, 0x4a
add edx, 0x4d
sub edx, 0x4d
sub ebx, 0x4a
pop edi
mov eax, dword [ebp - 0xb8]
cmp eax, dword [ebp - 0x80]
jb 0x4040d2
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0xb8]
add edi, 0x1b
add eax, 0x63
push ecx
and ecx, ebx
xor ecx, eax
pop ecx
sub eax, 0x63
sub edi, 0x1b
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
mov eax, dword [ebp - 0xb4]
push esi
mov esi, dword [ebp - 0x10]
and esi, dword [ebp - 0x14]
add esi, eax
pop esi
and eax, 0x100
mov dword [ebp - 0xbc], eax
mov eax, dword [ebp - 0xa4]
add eax, 0x200
mov ecx, dword [ebp - 0xbc]
shl ecx, 1
push eax
xor eax, dword [ebp - 0x10]
and eax, dword [ebp - 0x10]
xor eax, ebx
and eax, dword [ebp - 0x14]
sub eax, edi
pop eax
add eax, ecx
mov ecx, dword [ebp - 0xb0]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xc0], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x404187
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
push edi
add edi, edx
add edi, dword [ebp - 0x10]
sar edi, 0x46
sub edi, 0x60
pop edi
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 ebx
pop ebx
mov ecx, dword [ebp - 0xc0]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x40424b
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xc0]
movzx ecx, word [ecx]
add edi, 0x46
push edi
xor edi, ecx
add edi, dword [ebp - 0x18]
add edi, dword [ebp - 0x18]
add edi, esi
shr edi, 0x20
pop edi
sub edi, 0x46
sub eax, ecx
sar eax, 5
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
add ebx, 0x23
push eax
mov eax, dword [ebp - 0x14]
add eax, dword [ebp - 0xc]
shr eax, 0x3c
mov eax, edx
shr eax, 0x50
pop eax
sub ebx, 0x23
mov dword [ebp - 0xb0], eax
add ebx, 0x34
push edx
pop edx
sub ebx, 0x34
cmp dword [ebp - 0xbc], 0
je 0x404246
jmp 0x404333
jmp 0x40431e
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
push eax
add eax, esi
add eax, 0x5c
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x18]
pop eax
sub ecx, eax
mov dword [ebp - 0x34], ecx
push eax
xor eax, dword [ebp - 0x18]
or eax, ecx
pop eax
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
push edi
mov edi, eax
or edi, 0x44
and edi, dword [ebp - 0x14]
mov edi, eax
pop edi
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xc0]
movzx eax, word [eax]
sar eax, 5
add eax, 0x1b
add ecx, 0x45
add eax, 0x3b
add ebx, 0x3d
sub ebx, 0x3d
sub eax, 0x3b
sub ecx, 0x45
sub eax, 0x1b
mov ecx, dword [ebp - 0xc0]
add ecx, 0x26
sub ecx, 0x26
movzx edx, word [ecx]
sub edx, eax
mov si, dx
push edi
or edi, esi
sub edi, dword [ebp - 8]
pop edi
mov word [ecx], si
mov eax, dword [ebp - 0xb0]
add eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
cmp dword [ebp - 0xbc], 0
jne 0x404319
jmp 0x404333
jmp 0x40431e
jmp 0x404323
cmp dword [ebp - 0xb0], 0x100
jl 0x4040e5
jmp 0x404338
jmp 0x40433d
cmp dword [ebp - 0xb0], 0x100
jge 0x404536
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0xb0]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xc4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4043d4
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
add edi, 0x1c
sub edi, 0x1c
mov dword [ebp - 0x3c], edx
add edi, 0x58
add ecx, 0x20
add ebx, 0x21
add eax, 0x19
sub eax, 0x19
sub ebx, 0x21
sub ecx, 0x20
sub edi, 0x58
movzx ecx, byte [ecx]
push eax
pop eax
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xc4]
push ebx
or ebx, edx
shl ebx, 0x1c
nop
mov ebx, dword [ebp - 0x18]
pop ebx
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
add esi, 0x52
sub esi, 0x52
mov eax, dword [ebp - 0x38]
add ebx, 0xd
add ebx, 0x1d
add esi, 0x48
add ecx, 0x3e
push ebx
pop ebx
sub ecx, 0x3e
sub esi, 0x48
sub ebx, 0x1d
sub ebx, 0xd
cmp eax, dword [ebp - 0xa8]
jae 0x4044a8
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xc4]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xc4]
add edi, 0x5b
add esi, 4
push ecx
and ecx, ebx
sub ecx, ebx
xor ecx, dword [ebp - 8]
add ecx, edx
pop ecx
sub esi, 4
sub edi, 0x5b
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 0x404531
add esi, 0x25
sub esi, 0x25
mov eax, dword [ebp - 0xa8]
push eax
sub eax, ebx
xor eax, dword [ebp - 8]
pop eax
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
add ebx, 0x40
sub ebx, 0x40
mov ecx, dword [ebp - 0x38]
push edx
or edx, ecx
sub edx, esi
sar edx, 9
push edi
pop edi
shl edx, 0xd
pop edx
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xc4]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xc4]
movzx edx, word [ecx]
sub edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xb0]
add eax, 0x43
sub eax, 0x43
add eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jmp 0x40433d
mov eax, dword [ebp - 0xb0]
mov cl, al
mov byte [ebp - 0x49], cl
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
add ebx, 0x54
sub ebx, 0x54
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x80]
jae 0x40458f
push ecx
xor ecx, ebx
xor ecx, dword [ebp - 0x10]
or ecx, 0x4b
mov ecx, ebx
and ecx, dword [ebp - 0xc]
pop ecx
mov eax, dword [ebp - 0x78]
push ecx
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]
mov byte [edx + ecx], al
mov ecx, dword [ebp - 0x84]
add ecx, 0x18
sub ecx, 0x18
add ecx, 1
mov dword [ebp - 0x84], ecx
cmp ecx, dword [ebp - 0x80]
jne 0x4045cf
mov dword [ebp - 0x84], 0
push edx
push edi
pop edi
xor edx, eax
add edx, ebx
sub edx, dword [ebp - 0x14]
pop edx
cmp dword [ebp - 0x48], 4
jge 0x4045f3
mov dword [ebp - 0x48], 0
jmp 0x4046a4
add eax, 0x1c
sub eax, 0x1c
cmp dword [ebp - 0x48], 0xa
jge 0x404638
add edx, 0x2d
push esi
xor esi, dword [ebp - 8]
add esi, dword [ebp - 0x14]
shr esi, 6
xor esi, ecx
shl esi, 0x46
pop esi
sub edx, 0x2d
mov eax, dword [ebp - 0x48]
sub eax, 3
mov dword [ebp - 0x48], eax
jmp 0x40469f
push esi
nop
shl esi, 0x22
or esi, dword [ebp - 0x18]
and esi, 0x4d
add esi, 0x44
add ebx, 0x1c
add edi, 0x14
add ecx, 0x51
sub ecx, 0x51
sub edi, 0x14
sub ebx, 0x1c
sub esi, 0x44
pop esi
mov eax, dword [ebp - 0x48]
add ecx, 0x30
push esi
xor esi, edx
and esi, ebx
and esi, ecx
xor esi, 0x26
mov esi, dword [ebp - 0x18]
pop esi
sub ecx, 0x30
sub eax, 6
mov dword [ebp - 0x48], eax
jmp 0x4046a4
jmp 0x4061e0
mov eax, dword [ebp - 0xa8]
push edi
sub edi, dword [ebp - 0x18]
xor edi, dword [ebp - 0x10]
xor edi, eax
pop edi
mov ecx, dword [ebp - 0x34]
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 - 0xa4]
movzx eax, word [eax]
sar eax, 5
push edi
sub edi, esi
add edi, edx
add edi, dword [ebp - 0x10]
sub edi, dword [ebp - 0x14]
or edi, edx
pop edi
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
nop
sub edx, eax
mov si, dx
push edi
or edi, edx
sub edi, eax
or edi, dword [ebp - 8]
pop edi
mov word [ecx], si
mov eax, dword [ebp - 0x44]
add eax, 0x180
mov ecx, dword [ebp - 0x48]
shl ecx, 1
push edi
and edi, ecx
shr edi, 0x2a
pop edi
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x404772
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, 0x3c
add ecx, 0x4e
push esi
and esi, dword [ebp - 0x10]
mov esi, ecx
pop esi
sub ecx, 0x4e
sub eax, 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]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
add ebx, 0x47
push esi
or esi, edi
sub esi, dword [ebp - 0x14]
push edi
and edi, dword [ebp - 8]
add edi, ecx
and edi, dword [ebp - 0x10]
mov edi, ecx
pop edi
add esi, ecx
pop esi
sub ebx, 0x47
cmp eax, dword [ebp - 0xa8]
jae 0x4048c0
push ebx
add ebx, edi
mov ebx, edx
sub ebx, esi
sub ebx, dword [ebp - 0x10]
xor ebx, dword [ebp - 0xc]
pop ebx
mov eax, 3
mov ecx, 0
mov edx, 0x800
add edx, 0x55
sub edx, 0x55
mov esi, dword [ebp - 0xa8]
add esi, 0xe
push ecx
pop ecx
sub esi, 0xe
mov dword [ebp - 0x34], esi
mov esi, dword [ebp - 0xa4]
movzx esi, word [esi]
push eax
xor eax, esi
add ecx, 0x34
sub ecx, 0x34
pop eax
sub edx, esi
sar edx, 5
mov esi, dword [ebp - 0xa4]
movzx edi, word [esi]
add edi, edx
mov bx, di
mov word [esi], bx
push ebx
sub ebx, dword [ebp - 8]
xor ebx, edx
or ebx, edi
add eax, 0x24
push edi
add edi, dword [ebp - 0x18]
add edi, dword [ebp - 0x10]
xor edi, 0x14
push ebx
and ebx, dword [ebp - 0xc]
sub ebx, esi
pop ebx
pop edi
sub eax, 0x24
pop ebx
mov edx, dword [ebp - 0x58]
mov dword [ebp - 0x5c], edx
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x58], edx
mov edx, dword [ebp - 0x50]
mov dword [ebp - 0x54], edx
add edx, 0x2b
add edx, 0x46
nop
sub edx, 0x46
sub edx, 0x2b
cmp dword [ebp - 0x48], 7
cmovl eax, ecx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x44]
add esi, 0x5d
add edx, 0x3b
push edi
mov edi, edx
sar edi, 0x38
xor edi, dword [ebp - 0xc]
pop edi
sub edx, 0x3b
sub esi, 0x5d
add eax, 0x664
mov dword [ebp - 0xa4], eax
jmp 0x405183
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
add edx, 0x2b
push edi
and edi, eax
xor edi, ecx
or edi, edx
pop edi
sub edx, 0x2b
mov dword [ebp - 0x34], ecx
push esi
push eax
and eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x14]
and eax, edi
mov eax, ebx
pop eax
mov esi, dword [ebp - 0x18]
add esi, 0x2d
and esi, dword [ebp - 8]
pop esi
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]
push edi
add edx, 0x5e
sub edx, 0x5e
sub edi, esi
and edi, esi
pop edi
movzx edx, word [ecx]
sub edx, eax
add edx, 0x12
add edi, 0x42
sub edi, 0x42
sub edx, 0x12
mov si, dx
mov word [ecx], si
push edx
pop edx
mov eax, dword [ebp - 0x44]
add eax, 0x198
mov ecx, dword [ebp - 0x48]
shl ecx, 1
push ebx
add ebx, dword [ebp - 0xc]
or ebx, dword [ebp - 0xc]
and ebx, 0x37
sub ebx, 0x15
and ebx, edi
pop ebx
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4049fd
mov eax, dword [ebp - 0x34]
shl eax, 8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
shl eax, 8
push ecx
xor ecx, 0x1f
and ecx, dword [ebp - 0xc]
xor ecx, edx
pop ecx
mov ecx, dword [ebp - 0x3c]
push edx
mov edx, esi
and edx, ecx
xor edx, dword [ebp - 0x10]
pop edx
mov edx, ecx
add eax, 0x3a
add ebx, 0x59
push edi
and edi, dword [ebp - 8]
sub edi, edx
xor edi, dword [ebp - 0xc]
mov edi, dword [ebp - 0xc]
pop edi
sub ebx, 0x59
sub eax, 0x3a
add edx, 1
mov dword [ebp - 0x3c], edx
push ecx
pop ecx
movzx ecx, byte [ecx]
add esi, 0x32
sub esi, 0x32
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
push ebx
sub ebx, dword [ebp - 0x10]
xor ebx, esi
xor ebx, dword [ebp - 0xc]
mov ebx, esi
pop ebx
mov ecx, dword [ebp - 0xa4]
add ebx, 0x5e
add ecx, 0x2e
push edx
pop edx
sub ecx, 0x2e
sub ebx, 0x5e
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x404d77
mov eax, 0x800
nop
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xa4]
push eax
sub eax, dword [ebp - 0xc]
xor eax, edx
mov eax, dword [ebp - 0xc]
or eax, ebx
pop eax
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xa4]
push ecx
xor ecx, edi
and ecx, 0x58
xor ecx, dword [ebp - 0x18]
pop ecx
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
cmp dword [ebp - 0x34], 0x1000000
jae 0x404ae9
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 ecx
pop 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]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x404d2c
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
add eax, 0x50
add ebx, 0x13
sub ebx, 0x13
sub eax, 0x50
mov ecx, dword [ebp - 0xa4]
add eax, 0x5a
add ecx, 0x3d
add esi, 0x5c
sub esi, 0x5c
sub ecx, 0x3d
sub eax, 0x5a
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
add edi, 0x50
add edi, 0x60
sub edi, 0x60
sub edi, 0x50
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
add edx, eax
push eax
add eax, dword [ebp - 0x18]
sub eax, ecx
and eax, edi
add eax, dword [ebp - 0xc]
add eax, ecx
pop eax
mov si, dx
push ebx
pop ebx
mov word [ecx], si
add edi, 0x2a
sub edi, 0x2a
cmp dword [ebp - 0x78], 0
jne 0x404bc6
mov dword [ebp - 0x10], 1
jmp 0x4063eb
mov eax, dword [ebp - 0x78]
cmp eax, dword [ebp - 0x80]
jae 0x404bdd
mov eax, dword [ebp - 0x78]
add eax, 1
mov dword [ebp - 0x78], eax
mov eax, 0xb
mov ecx, 9
cmp dword [ebp - 0x48], 7
cmovl eax, ecx
add edi, 0x17
sub edi, 0x17
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x84]
push esi
pop esi
sub eax, dword [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x18]
add eax, 0x45
and eax, edx
xor eax, dword [ebp - 8]
pop eax
mov dword [ebp - 0xc8], eax
mov eax, dword [ebp - 0xc8]
cmp eax, dword [ebp - 0x80]
jb 0x404c42
mov eax, dword [ebp - 0x80]
nop
mov ecx, dword [ebp - 0xc8]
add ecx, eax
mov dword [ebp - 0xc8], ecx
push eax
xor eax, ecx
and eax, 0x29
add eax, esi
sub eax, dword [ebp - 8]
pop eax
mov eax, dword [ebp - 0xc8]
add ecx, 0x32
push ecx
pop ecx
sub ecx, 0x32
mov ecx, dword [ebp - 0x7c]
push ecx
xor ecx, dword [ebp - 0x18]
push eax
add eax, esi
sub eax, edi
or eax, ebx
add edi, 0x39
push ebx
xor ebx, edx
mov ebx, dword [ebp - 0xc]
xor ebx, dword [ebp - 0x14]
add ebx, eax
pop ebx
sub edi, 0x39
and eax, dword [ebp - 0xc]
pop eax
shl ecx, 3
pop ecx
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
mov dl, byte [ebp - 0x49]
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x7c]
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x84]
nop
add eax, 1
mov dword [ebp - 0x84], eax
push edx
mov edx, eax
mov edx, ecx
add edx, esi
add edx, edi
pop edx
cmp eax, dword [ebp - 0x80]
jne 0x404cd7
mov dword [ebp - 0x84], 0
mov al, byte [ebp - 0x49]
mov ecx, dword [ebp - 0x60]
push ecx
or ecx, edx
sub ecx, esi
add edx, 0x59
add edi, 0x55
add eax, 0x2c
push eax
add eax, 8
or eax, ebx
pop eax
sub eax, 0x2c
sub edi, 0x55
sub edx, 0x59
add ecx, eax
and ecx, dword [ebp - 0xc]
pop ecx
mov edx, ecx
add edx, 1
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x20]
mov byte [edx + ecx], al
jmp 0x403c7d
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
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 - 0xa4]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xa4]
movzx edx, word [ecx]
push esi
and esi, dword [ebp - 0x14]
and esi, 0x19
or esi, edi
pop esi
sub edx, eax
mov si, dx
mov word [ecx], si
jmp 0x40515e
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
add edi, 1
add edi, 3
push edx
pop edx
sub edi, 3
sub edi, 1
mov dword [ebp - 0x34], ecx
add ecx, 0x1d
push eax
mov eax, ecx
add eax, 3
push ebx
pop ebx
sub eax, 3
pop eax
sub ecx, 0x1d
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]
push ebx
add edi, 0x4b
add eax, 0x4c
push ebx
sar ebx, 0x2f
and ebx, dword [ebp - 0x14]
sub ebx, 0x54
and ebx, dword [ebp - 0x10]
push esi
sub esi, ecx
sub esi, ecx
and esi, ecx
xor esi, dword [ebp - 0x10]
pop esi
pop ebx
sub eax, 0x4c
sub edi, 0x4b
and ebx, edx
pop ebx
movzx edx, word [ecx]
sub edx, eax
add eax, 0x4f
push ecx
and ecx, edx
sub ecx, dword [ebp - 0x18]
pop ecx
sub eax, 0x4f
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x44]
add eax, 0x1b0
mov ecx, dword [ebp - 0x48]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x404e7c
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
nop
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 edx, 0x62
push edx
xor edx, ecx
add edx, dword [ebp - 0xc]
mov edx, edi
sub edx, ebx
xor edx, dword [ebp - 0xc]
pop edx
sub edx, 0x62
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 0x404f3b
add edi, 0x21
add ebx, 0x5e
add ecx, 0x12
add edi, 0x62
sub edi, 0x62
sub ecx, 0x12
sub ebx, 0x5e
sub edi, 0x21
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xa4]
add edx, 0x4b
sub edx, 0x4b
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xa4]
push ebx
add ebx, dword [ebp - 0x10]
sub ebx, edi
pop ebx
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 0x40514f
push ebx
xor ebx, eax
add ebx, ecx
add ebx, edi
add ebx, eax
or ebx, esi
pop ebx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
push eax
pop eax
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
add eax, 0x4d
sub eax, 0x4d
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]
add eax, 0x47
sub eax, 0x47
movzx edx, word [ecx]
sub edx, eax
mov si, dx
add ecx, 0x34
push ebx
pop ebx
sub ecx, 0x34
mov word [ecx], si
add edx, 0x3b
push ebx
and ebx, dword [ebp - 8]
or ebx, dword [ebp - 8]
and ebx, 0x3a
pop ebx
sub edx, 0x3b
mov eax, dword [ebp - 0x44]
add edi, 0x1b
push edi
pop edi
sub edi, 0x1b
add eax, 0x1c8
mov ecx, dword [ebp - 0x48]
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xa4], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x405047
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, 0x20
push edx
and edx, 0x50
and edx, dword [ebp - 0x18]
or edx, 0x44
pop edx
sub edx, 0x20
add edx, 1
mov dword [ebp - 0x3c], edx
add esi, 0x54
push edx
add edx, eax
mov edx, eax
pop edx
sub esi, 0x54
movzx ecx, byte [ecx]
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
add ebx, 7
sub ebx, 7
mov ecx, dword [ebp - 0xa4]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
push edi
mov edi, ecx
xor edi, esi
and edi, 0x21
pop edi
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4050db
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
add edx, 0xa
push edx
add edx, dword [ebp - 0x18]
sub edx, edi
mov edx, dword [ebp - 0x14]
shl edx, 0x60
pop edx
sub edx, 0xa
mov dword [ebp - 0x34], ecx
nop
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 - 0x58]
mov dword [ebp - 0xcc], eax
jmp 0x405149
add edx, 0xc
add ecx, 0xe
push eax
pop eax
sub ecx, 0xe
sub edx, 0xc
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
add ecx, 0x20
sub ecx, 0x20
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
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
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
add ecx, 0x4f
sub ecx, 0x4f
mov eax, dword [ebp - 0xa4]
add ebx, 0x4b
push edx
or edx, eax
xor edx, dword [ebp - 0x18]
xor edx, dword [ebp - 0xc]
pop edx
sub ebx, 0x4b
mov dword [ebp - 0xd8], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4051f3
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]
push esi
pop esi
mov edx, ecx
add edx, 0x4b
sub edx, 0x4b
add edx, 1
push esi
pop esi
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 - 0xd8]
add eax, 0x49
push ecx
sub ecx, dword [ebp - 0xc]
or ecx, dword [ebp - 0x14]
pop ecx
sub eax, 0x49
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4052c5
mov eax, 0x800
add ebx, 3
add eax, 0x42
sub eax, 0x42
sub ebx, 3
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
add ecx, 0x35
sub ecx, 0x35
mov ecx, dword [ebp - 0xd8]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xd8]
push esi
pop esi
movzx edx, word [ecx]
add ecx, 0x35
sub ecx, 0x35
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xa4]
add eax, 4
mov ecx, dword [ebp - 0xac]
shl ecx, 3
shl ecx, 1
add eax, ecx
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0xd0], 3
jmp 0x405552
mov eax, dword [ebp - 0xa8]
push edx
push edx
pop edx
or edx, 0xd
xor edx, ebx
and edx, 0x29
or edx, eax
pop edx
mov ecx, dword [ebp - 0x34]
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 eax, 0x17
sub eax, 0x17
movzx edx, word [ecx]
add esi, 0x40
sub esi, 0x40
sub edx, eax
mov si, dx
mov word [ecx], si
add edi, 1
nop
sub edi, 1
mov eax, dword [ebp - 0xa4]
add eax, 2
mov dword [ebp - 0xd8], eax
push edi
pop edi
cmp dword [ebp - 0x34], 0x1000000
jae 0x405389
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 eax, 0x44
nop
sub eax, 0x44
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 - 0xd8]
push edx
xor edx, dword [ebp - 0x18]
mov edx, ebx
add edx, edi
or edx, 0x28
xor edx, ecx
pop edx
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
add eax, 0x2d
add ebx, 0x2d
add ecx, 0x23
add edx, 0x4a
push edx
xor edx, dword [ebp - 0x18]
sub edx, edi
pop edx
sub edx, 0x4a
sub ecx, 0x23
sub ebx, 0x2d
sub eax, 0x2d
cmp eax, dword [ebp - 0xa8]
jae 0x40548a
add edx, 0x4a
sub edx, 0x4a
mov eax, 0x800
add edi, 0x5e
sub edi, 0x5e
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0x34], ecx
add ebx, 0x55
push edi
push esi
pop esi
or edi, edx
or edi, dword [ebp - 8]
pop edi
sub ebx, 0x55
mov ecx, dword [ebp - 0xd8]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xd8]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xa4]
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 0x40554d
push edx
mov edx, edi
add edx, eax
add edx, 0x41
push edi
or edi, dword [ebp - 8]
or edi, 0x23
pop edi
sub edx, 0x41
add edx, dword [ebp - 0x10]
or edx, dword [ebp - 8]
pop edx
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
add esi, 0x51
sub esi, 0x51
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]
push edx
add edx, dword [ebp - 0x18]
and edx, edi
push ecx
mov ecx, dword [ebp - 0x10]
xor ecx, dword [ebp - 0x10]
or ecx, dword [ebp - 8]
pop ecx
pop edx
movzx edx, word [ecx]
add eax, 0x27
push edi
pop edi
sub eax, 0x27
sub edx, eax
push eax
mov eax, dword [ebp - 0x14]
add eax, 0x25
xor eax, dword [ebp - 0x18]
and eax, edx
pop eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xa4]
push ecx
xor ecx, edi
sub ecx, eax
pop ecx
add eax, 0x204
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], 0x10
mov dword [ebp - 0xd0], 8
jmp 0x405552
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 edi
or edi, dword [ebp - 0xc]
and edi, dword [ebp - 0x18]
add edi, dword [ebp - 0x18]
add edi, eax
pop edi
add eax, ecx
mov dword [ebp - 0xe0], eax
push ecx
pop ecx
cmp dword [ebp - 0x34], 0x1000000
jae 0x4055c6
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, 0x25
sub ebx, 0x25
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 ebx
pop ebx
mov ecx, dword [ebp - 0xe0]
movzx ecx, word [ecx]
push eax
sub eax, dword [ebp - 0xc]
and eax, esi
and eax, 0xb
mov eax, ecx
pop eax
imul eax, ecx
add edx, 0x4d
push eax
and eax, ecx
sub eax, dword [ebp - 0x18]
pop eax
sub edx, 0x4d
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x4056bc
add eax, 0x10
add edi, 0x4a
add ebx, 0x4a
sub ebx, 0x4a
sub edi, 0x4a
sub eax, 0x10
mov eax, 0x800
add ecx, 0x55
add ebx, 0xb
push ebx
mov ebx, dword [ebp - 0x14]
and ebx, dword [ebp - 8]
xor ebx, ecx
or ebx, eax
or ebx, dword [ebp - 8]
pop ebx
sub ebx, 0xb
sub ecx, 0x55
mov ecx, dword [ebp - 0xa8]
push eax
push esi
mov esi, ebx
or esi, 6
and esi, dword [ebp - 0x14]
sub esi, edi
pop esi
xor eax, dword [ebp - 8]
or eax, dword [ebp - 0xc]
pop eax
mov dword [ebp - 0x34], ecx
push ecx
xor ecx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x18]
xor ecx, edi
sub ecx, edx
sub ecx, edx
pop ecx
mov ecx, dword [ebp - 0xe0]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xe0]
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0x70]
shl eax, 1
mov dword [ebp - 0x70], eax
jmp 0x405724
add ebx, 0x2d
sub ebx, 0x2d
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
sub ecx, eax
push edx
mov edx, edi
mov edx, esi
add edx, dword [ebp - 0x14]
pop edx
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 - 0xe0]
movzx eax, word [eax]
sar eax, 5
mov ecx, dword [ebp - 0xe0]
movzx edx, word [ecx]
sub edx, eax
mov si, dx
add ecx, 0x25
sub ecx, 0x25
mov word [ecx], si
mov eax, dword [ebp - 0x70]
add eax, dword [ebp - 0x70]
add eax, 1
mov dword [ebp - 0x70], eax
jmp 0x405729
mov eax, dword [ebp - 0xdc]
add eax, 0xffffffff
mov dword [ebp - 0xdc], eax
cmp eax, 0
jne 0x405565
mov eax, 1
mov ecx, dword [ebp - 0xd0]
shl eax, cl
add eax, 0x1c
sub eax, 0x1c
mov edx, dword [ebp - 0x70]
sub edx, eax
mov dword [ebp - 0x70], edx
add ecx, 0x24
push edi
xor edi, ecx
and edi, dword [ebp - 0x10]
pop edi
sub ecx, 0x24
mov eax, dword [ebp - 0xd4]
mov edx, dword [ebp - 0x70]
add edx, eax
push ebx
and ebx, esi
xor ebx, ecx
pop ebx
mov dword [ebp - 0x70], edx
cmp dword [ebp - 0x48], 4
jge 0x405fa2
mov eax, dword [ebp - 0x48]
push edi
mov edi, ebx
add edi, ebx
add edi, dword [ebp - 0x10]
sub edi, esi
add edi, dword [ebp - 8]
pop edi
add eax, 7
push eax
add eax, esi
add edx, 0x1a
push ecx
pop ecx
sub edx, 0x1a
add eax, dword [ebp - 0xc]
sub eax, ecx
pop eax
mov dword [ebp - 0x48], eax
add edi, 0xd
sub edi, 0xd
mov eax, dword [ebp - 0x44]
add eax, 0x360
cmp dword [ebp - 0x70], 4
mov dword [ebp - 0x11c], eax
jge 0x4057ff
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x120], eax
jmp 0x40580f
mov eax, 3
mov dword [ebp - 0x120], eax
jmp 0x40580f
mov eax, dword [ebp - 0x120]
shl eax, 6
shl eax, 1
mov ecx, dword [ebp - 0x11c]
push esi
sub esi, dword [ebp - 0x10]
xor esi, dword [ebp - 0x10]
pop esi
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, 8
add eax, 0xe
push ecx
and ecx, dword [ebp - 0xc]
xor ecx, dword [ebp - 0x14]
xor ecx, edx
pop ecx
sub eax, 0xe
sub eax, 8
add eax, ecx
mov dword [ebp - 0xec], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x4058b0
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
mov ecx, dword [ebp - 0xec]
movzx ecx, word [ecx]
imul eax, ecx
add esi, 0x1d
add ebx, 0x1d
push esi
pop esi
sub ebx, 0x1d
sub esi, 0x1d
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x405955
add edi, 0x21
push ebx
add ebx, dword [ebp - 0x14]
mov ebx, ecx
pop ebx
sub edi, 0x21
mov eax, 0x800
mov ecx, dword [ebp - 0xa8]
push ebx
add ebx, dword [ebp - 0x14]
sub ebx, edi
and ebx, dword [ebp - 0x18]
and ebx, 0
pop ebx
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0xec]
movzx ecx, word [ecx]
sub eax, ecx
sar eax, 5
mov ecx, dword [ebp - 0xec]
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 0x405a0b
add ebx, 0x11
sub ebx, 0x11
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
add edx, 0x11
add ebx, 0x1d
sub ebx, 0x1d
sub edx, 0x11
sub ecx, eax
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0xa8]
add ebx, 0x2b
push ebx
or ebx, 0x1f
add ebx, dword [ebp - 0x18]
xor ebx, edi
add ebx, ecx
sub ebx, dword [ebp - 8]
pop ebx
sub ebx, 0x2b
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
push edx
pop edx
mov ecx, dword [ebp - 0xec]
movzx edx, word [ecx]
push eax
pop eax
sub edx, eax
push edx
sub edx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
and edx, ebx
xor edx, dword [ebp - 8]
and edx, esi
pop edx
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xe4]
add eax, dword [ebp - 0xe4]
push edi
mov edi, esi
sub edi, esi
xor edi, dword [ebp - 0x10]
or edi, 0x51
sub edi, eax
pop edi
add eax, 1
mov dword [ebp - 0xe4], eax
jmp 0x405a10
mov eax, dword [ebp - 0xe8]
add eax, 0xffffffff
mov dword [ebp - 0xe8], eax
cmp eax, 0
jne 0x405845
push ecx
xor ecx, 0x36
mov ecx, dword [ebp - 0x10]
and ecx, eax
add ecx, edx
pop ecx
mov eax, dword [ebp - 0xe4]
nop
sub eax, 0x40
mov dword [ebp - 0xe4], eax
push ecx
and ecx, ebx
mov ecx, edi
or ecx, dword [ebp - 0xc]
add ecx, edi
and ecx, edi
pop ecx
cmp dword [ebp - 0xe4], 4
jl 0x405f40
mov eax, dword [ebp - 0xe4]
sar eax, 1
sub eax, 1
push edx
pop edx
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0xe4]
and eax, 1
or eax, 2
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0xe4], 0xe
jge 0x405b33
mov eax, 0
mov ecx, dword [ebp - 0xf0]
mov edx, dword [ebp - 0x50]
shl edx, cl
mov dword [ebp - 0x50], edx
add edi, 0x53
add edi, 0x4d
push ebx
xor ebx, dword [ebp - 0x18]
add ebx, edx
mov ebx, ecx
sub ebx, dword [ebp - 0x14]
sub ebx, esi
pop ebx
sub edi, 0x4d
sub edi, 0x53
mov edx, dword [ebp - 0x44]
push edi
pop edi
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
push ecx
mov ecx, dword [ebp - 0x10]
add edi, 0x4d
push edi
sub edi, dword [ebp - 0x10]
add edi, dword [ebp - 8]
mov edi, edx
and edi, edx
sub edi, dword [ebp - 0x14]
pop edi
sub edi, 0x4d
add ecx, dword [ebp - 0xc]
or ecx, dword [ebp - 0x14]
sub ecx, ebx
pop ecx
add edx, 0xfffffffe
mov dword [ebp - 0xa4], edx
jmp 0x405cc4
add ecx, 0x27
sub ecx, 0x27
mov eax, dword [ebp - 0xf0]
sub eax, 4
mov dword [ebp - 0xf0], eax
push edx
or edx, ecx
sub edx, dword [ebp - 0x18]
xor edx, dword [ebp - 8]
and edx, edi
pop edx
cmp dword [ebp - 0x34], 0x1000000
jae 0x405b90
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 eax
pop eax
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
push eax
mov eax, edx
add eax, dword [ebp - 0xc]
or eax, dword [ebp - 0xc]
pop eax
mov dword [ebp - 0x50], eax
add edi, 0x26
push ebx
xor ebx, dword [ebp - 0x10]
add edi, 0x2a
add esi, 0x51
push ebx
mov ebx, esi
or ebx, ecx
sar ebx, 0x33
shl ebx, 2
pop ebx
sub esi, 0x51
sub edi, 0x2a
or ebx, dword [ebp - 8]
sub ebx, edx
add ebx, eax
pop ebx
sub edi, 0x26
mov eax, dword [ebp - 0x38]
add edx, 0x3f
add ebx, 0x5a
add edx, 0x63
add edi, 0x3b
push eax
pop eax
sub edi, 0x3b
sub edx, 0x63
sub ebx, 0x5a
sub edx, 0x3f
cmp eax, dword [ebp - 0x34]
jb 0x405c6e
add edi, 0x41
add ecx, 0x40
add ebx, 0x14
add esi, 0x29
push edi
pop edi
sub esi, 0x29
sub ebx, 0x14
sub ecx, 0x40
sub edi, 0x41
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x38]
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x50]
or eax, 1
mov dword [ebp - 0x50], eax
jmp 0x405c73
add edi, 0x3e
sub edi, 0x3e
mov eax, dword [ebp - 0xf0]
add eax, 0xffffffff
mov dword [ebp - 0xf0], eax
cmp eax, 0
jne 0x405b50
push ecx
and ecx, dword [ebp - 0xc]
xor ecx, dword [ebp - 0x14]
pop ecx
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
add ecx, 0x3a
push esi
mov esi, dword [ebp - 0x10]
mov esi, eax
pop esi
sub ecx, 0x3a
mov dword [ebp - 0xfc], eax
cmp dword [ebp - 0x34], 0x1000000
jae 0x405d88
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, 0x29
add eax, 0x55
add edi, 0x43
push edx
sub edx, dword [ebp - 0x18]
or edx, dword [ebp - 0x14]
xor edx, esi
push esi
pop esi
pop edx
sub edi, 0x43
sub eax, 0x55
sub edi, 0x29
add edx, 1
add ecx, 0x16
add edx, 0xd
sub edx, 0xd
sub ecx, 0x16
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
add edx, 0x42
sub edx, 0x42
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
shr eax, 0xb
mov ecx, dword [ebp - 0xfc]
movzx ecx, word [ecx]
imul eax, ecx
mov dword [ebp - 0xa8], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0xa8]
jae 0x405e28
add edx, 0x1d
add edx, 0x57
push edi
pop edi
sub edx, 0x57
sub edx, 0x1d
mov eax, 0x800
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]
add ecx, 0x30
add ebx, 0x5a
push edi
push esi
pop esi
or edi, ebx
pop edi
sub ebx, 0x5a
sub ecx, 0x30
movzx edx, word [ecx]
add edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xf8]
shl eax, 1
mov dword [ebp - 0xf8], eax
jmp 0x405ef8
add ebx, 0x41
push esi
mov esi, edi
mov esi, dword [ebp - 8]
and esi, ecx
or esi, dword [ebp - 0x14]
pop esi
sub ebx, 0x41
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x34]
push ebx
and ebx, edx
and ebx, esi
pop ebx
sub ecx, eax
mov dword [ebp - 0x34], ecx
add ebx, 0x25
add ecx, 0x3e
add edx, 0x58
sub edx, 0x58
sub ecx, 0x3e
sub ebx, 0x25
mov eax, dword [ebp - 0xa8]
mov ecx, dword [ebp - 0x38]
push ecx
add ecx, 0x5d
add ecx, dword [ebp - 8]
mov ecx, dword [ebp - 0x18]
add ecx, edx
pop ecx
sub ecx, eax
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0xfc]
movzx eax, word [eax]
sar eax, 5
push ecx
pop ecx
mov ecx, dword [ebp - 0xfc]
push ecx
add ecx, dword [ebp - 0x10]
and ecx, edx
or ecx, ebx
pop ecx
movzx edx, word [ecx]
sub edx, eax
mov si, dx
mov word [ecx], si
mov eax, dword [ebp - 0xf8]
add eax, dword [ebp - 0xf8]
add eax, 1
mov dword [ebp - 0xf8], eax
mov eax, dword [ebp - 0xf4]
mov ecx, dword [ebp - 0x50]
add eax, 0xf
push ebx
add ebx, esi
add ebx, dword [ebp - 0x10]
xor ebx, ecx
pop ebx
sub eax, 0xf
or ecx, eax
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp - 0xf4]
shl eax, 1
mov dword [ebp - 0xf4], eax
mov eax, dword [ebp - 0xf0]
add eax, 0xffffffff
add esi, 0x5d
add ecx, 7
sub ecx, 7
sub esi, 0x5d
mov dword [ebp - 0xf0], eax
cmp eax, 0
jne 0x405cd8
jmp 0x405f49
mov eax, dword [ebp - 0xe4]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x50]
add esi, 0x3d
add ebx, 0x1c
add ebx, 0x32
add ebx, 0x35
push ecx
pop ecx
sub ebx, 0x35
sub ebx, 0x32
sub ebx, 0x1c
sub esi, 0x3d
add eax, 1
mov dword [ebp - 0x50], eax
cmp eax, 0
jne 0x405f9d
mov dword [ebp - 0x70], 0xffffffff
jmp 0x4061e5
jmp 0x405fa2
add edi, 0x1a
add esi, 0x4f
sub esi, 0x4f
sub edi, 0x1a
mov eax, dword [ebp - 0x70]
add eax, 2
add eax, 0x48
add edi, 0x1c
sub edi, 0x1c
sub eax, 0x48
mov dword [ebp - 0x70], eax
push ecx
sub ecx, dword [ebp - 0x10]
mov ecx, ebx
sub ecx, dword [ebp - 0xc]
pop ecx
mov eax, dword [ebp - 0x50]
cmp eax, dword [ebp - 0x78]
jbe 0x405fff
mov dword [ebp - 0x10], 1
jmp 0x4063eb
add ebx, 0x4b
push ecx
pop ecx
sub ebx, 0x4b
mov eax, dword [ebp - 0x80]
nop
sub eax, dword [ebp - 0x78]
push edi
xor edi, ebx
xor edi, ebx
pop edi
cmp eax, dword [ebp - 0x70]
jbe 0x406033
mov eax, dword [ebp - 0x70]
mov ecx, dword [ebp - 0x78]
add ecx, eax
mov dword [ebp - 0x78], ecx
jmp 0x406039
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x78], eax
jmp 0x40603e
push ecx
sub ecx, ebx
xor ecx, edx
shl ecx, 4
pop ecx
mov eax, dword [ebp - 0x84]
nop
sub eax, dword [ebp - 0x50]
mov dword [ebp - 0x100], eax
mov eax, dword [ebp - 0x100]
cmp eax, dword [ebp - 0x80]
jb 0x406098
push esi
add esi, edx
sub esi, ecx
sub esi, dword [ebp - 8]
pop esi
mov eax, dword [ebp - 0x80]
add edi, 0x29
add ecx, 0x5c
sub ecx, 0x5c
sub edi, 0x29
mov ecx, dword [ebp - 0x100]
add ecx, eax
mov dword [ebp - 0x100], ecx
mov eax, dword [ebp - 0x100]
add ebx, 8
push esi
add esi, dword [ebp - 0x14]
mov esi, dword [ebp - 0x14]
pop esi
sub ebx, 8
mov ecx, dword [ebp - 0x7c]
mov dl, byte [ecx + eax]
mov byte [ebp - 0x49], dl
mov dl, byte [ebp - 0x49]
push ecx
add ecx, 0x51
sub ecx, dword [ebp - 0xc]
pop ecx
mov eax, dword [ebp - 0x84]
add ebx, 0x1e
add ecx, 0x5f
add ebx, 9
push edi
or edi, ecx
sub edi, dword [ebp - 8]
sub edi, dword [ebp - 8]
pop edi
sub ebx, 9
sub ecx, 0x5f
sub ebx, 0x1e
mov ecx, dword [ebp - 0x7c]
mov byte [ecx + eax], dl
mov eax, dword [ebp - 0x84]
add ebx, 0x1e
push esi
sub esi, 0x61
add esi, dword [ebp - 0x14]
pop esi
sub ebx, 0x1e
add eax, 1
push edx
sub edx, dword [ebp - 0x18]
sub edx, esi
pop edx
mov dword [ebp - 0x84], eax
cmp eax, dword [ebp - 0x80]
jne 0x406145
mov dword [ebp - 0x84], 0
push edi
sub edi, dword [ebp - 0x18]
mov edi, esi
or edi, 0x20
add edi, dword [ebp - 0xc]
xor edi, dword [ebp - 0xc]
pop edi
mov eax, dword [ebp - 0x70]
add eax, 0xffffffff
mov dword [ebp - 0x70], eax
mov cl, byte [ebp - 0x49]
add edx, 0xf
push eax
xor eax, ecx
mov eax, edi
sub eax, ebx
pop eax
sub edx, 0xf
mov eax, dword [ebp - 0x60]
push ecx
sar ecx, 0x28
push edx
sub edx, eax
xor edx, dword [ebp - 8]
or edx, 0x2f
pop edx
xor ecx, eax
pop ecx
mov edx, eax
push esi
xor esi, dword [ebp - 0x10]
xor esi, edx
pop esi
add edx, 1
mov dword [ebp - 0x60], edx
mov edx, dword [ebp - 0x20]
mov byte [edx + eax], cl
mov al, 0
cmp dword [ebp - 0x70], 0
mov byte [ebp - 0x121], al
je 0x4061cd
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 0x40603e
jmp 0x4061e0
jmp 0x403c7d
cmp dword [ebp - 0x34], 0x1000000
jae 0x406261
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 edx, 0x1c
add esi, 0x61
nop
sub esi, 0x61
sub edx, 0x1c
mov edx, ecx
add edx, 0x32
nop
sub edx, 0x32
add edx, 1
mov dword [ebp - 0x3c], edx
movzx ecx, byte [ecx]
push esi
mov esi, dword [ebp - 8]
or esi, eax
mov esi, edx
and esi, dword [ebp - 0x14]
add edi, 0x28
add edx, 0x20
sub edx, 0x20
sub edi, 0x28
pop esi
or eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x3c]
add eax, 0x21
sub eax, 0x21
mov ecx, dword [ebp - 0x30]
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 0x40629c
mov dword [ebp - 0x10], 1
jmp 0x4063eb
mov dword [ebp - 0x104], 0
mov eax, dword [ebp - 0x104]
push edi
add edi, dword [ebp - 8]
sub edi, ebx
add edi, eax
xor edi, dword [ebp - 0x18]
pop edi
cmp eax, dword [ebp - 0x40]
jge 0x4062f6
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]
push eax
add eax, ebx
and eax, ebx
pop eax
add eax, 1
mov dword [ebp - 0x104], eax
jmp 0x4062a6
mov eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x30]
push esi
push eax
pop eax
mov esi, ecx
xor esi, dword [ebp - 0x10]
pop esi
mov dword [ecx + 0x58], eax
mov eax, dword [ebp - 0x34]
add edx, 0x51
push esi
xor esi, 0x4b
push edi
mov edi, dword [ebp - 8]
mov edi, edx
add edi, edx
pop edi
sub esi, eax
or esi, ebx
pop esi
sub edx, 0x51
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x5c], eax
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x60], eax
add edi, 8
push edi
and edi, dword [ebp - 0x10]
sub edi, esi
shr edi, 0x5e
or edi, dword [ebp - 0x18]
or edi, dword [ebp - 0x10]
pop edi
sub edi, 8
mov eax, dword [ebp - 0x84]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0x64], eax
mov eax, dword [ebp - 0x74]
add ecx, 0x3a
add eax, 0x21
nop
sub eax, 0x21
sub ecx, 0x3a
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