Function at 0x412ba8
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffac
push ebx
push esi
push edi
pushal
push 0x700000
push 0
call sub.kernel32.dll_GlobalAlloc
mov dword [0x4dcfec], eax
push eax
mov edi, eax
mov ecx, 0x1c0000
or eax, 0xffffffff
rep stosd dword es:[edi], eax
pop edi
mov byte [edi + 0x48], 0xa
lea ebx, [ebp - 0x10]
push ebx
call sub.kernel32.dll_GetSystemTime
movzx eax, word [ebx]
sub eax, 0x7de
imul edx, eax, 0xc
movzx eax, word [ebx + 2]
add eax, edx
shl eax, 5
movzx edx, word [ebx + 6]
add eax, edx
imul eax, eax, 0x18
movzx edx, word [ebx + 8]
add eax, edx
imul eax, eax, 0x3c
movzx edx, word [ebx + 0xa]
add eax, edx
imul eax, eax, 0x3c
movzx ecx, word [ebx + 0xc]
add ecx, eax
shl ecx, 2
movzx eax, byte [ebx + 0xf]
add eax, ecx
mov dword [edi + 0x4c], eax
xor ebp, ebp
mov eax, dword [ebp*4 + 0x2d3fc9b]
add eax, 0xa000a
bswap eax
lea ebx, [edi + 0x4ba4]
mov word [ebx + ebp*2], ax
shr eax, 0x10
mov word [ebx + ebp*2 - 0x20], ax
xor esi, esi
xor ebx, ebx
imul ecx, ebp, 0x2b
imul eax, esi, 6
lea ecx, [ecx + eax + 0x2d3f9eb]
movzx eax, word [ecx + ebx*2]
cdq
push dword [ecx + ebx + 4]
lea ecx, [edx + 0x3c]
div ecx
shl edx, 5
add edx, eax
pop eax
mov ah, al
and ah, 3
jne 0x412c70
add dh, 8
dec ah
jne 0x412c77
add dh, 0x10
shr al, 2
jne 0x412c7f
add dh, 0x20
dec al
jne 0x412c86
add dh, 0x40
imul eax, ebp, 0xe
lea eax, [eax + esi*2]
add eax, ebx
mov word [edi + eax*2 + 0x49c4], dx
xor ebx, 1
jne 0x412c45
inc esi
cmp esi, 6
jbe 0x412c43
inc ebp
cmp ebp, 0xf
jbe 0x412c21
push pe_nt_image_headers32
push 0x2e99ba5
lea eax, [edi + 0x50]
push eax
call sub.kernel32.dll_RtlMoveMemory
lea eax, [edi + 0x150]
mov edx, 0x2e96fd1
mov ecx, 0x2bd4
call fcn.004122d4
push 0xe0
push 0x2e9b8a5
lea eax, [edi + 0x2d24]
push eax
call sub.kernel32.dll_RtlMoveMemory
lea eax, [edi + 0x2e04]
mov edx, 0x2e99cc5
mov ecx, 0x1bc0
call fcn.004122d4
add edi, 0x4bf7
mov eax, dword [0x2d3fdfd]
mov byte [edi - 0x21], al
mov eax, dword [0x2d3fcdb]
mov ax, word [eax*2 + 0x45e8ba]
bswap eax
mov dword [edi - 0x25], eax
mov esi, 0x4caa7b
mov ecx, 0x156
rep movsb byte es:[edi], byte [esi]
mov dword [0x4dcff4], edi
mov edi, dword [0x4dcfec]
add edi, 0x4bc4
mov esi, 0x2d3fcdf
push 7
pop ecx
lodsd eax, dword [esi]
dec eax
js 0x412d49
inc eax
stosw word es:[edi], ax
loop 0x412d44
popal
pushal
mov edi, dword [0x4dcff4]
mov esi, 0x67886d
xor ecx, ecx
mov edx, 0x678928
cmp byte [edx + 7], cl
jne 0x412de4
mov byte [edx], 0xff
mov esi, 0x412d86
mov eax, dword [0x2d3fcdb]
dec eax
js 0x412de4
add esi, 0x13
je 0x412de4
add esi, 0x14
dec eax
je 0x412de4
add esi, 0xc
jmp 0x412de4
lodsb al, byte [esi]
or al, al
je 0x412df4
cmp cl, byte [edx]
jne 0x412df0
mov al, 0xd
inc edx
stosb byte es:[edi], al
inc ecx
jmp 0x412de4
mov al, 0xd
stosb byte es:[edi], al
lea eax, [ebp - 0x30]
push eax
call sub.kernel32.dll_GetLocalTime
mov eax, dword [ebp - 0x2a]
call fcn.00412dc6
mov eax, dword [ebp - 0x2e]
call fcn.00412dc6
movzx eax, word [ebp - 0x30]
cdq
lea ecx, [edx + 0x64]
div ecx
mov ebx, 0x412dd9
call ebx
mov eax, edx
call ebx
mov al, 0x20
stosb byte es:[edi], al
mov eax, dword [ebp - 0x28]
call ebx
mov al, 0x3a
stosb byte es:[edi], al
mov eax, dword [ebp - 0x26]
call ebx
mov al, 0
stosb byte es:[edi], al
mov dword [0x4dcff4], edi
popal
pushal
mov edi, dword [0x4dcff4]
mov eax, dword [0x2d3fcdb]
mov ax, word [eax*2 + 0x45e8b2]
mov esi, dword [eax*4 + 0x4f01d0]
xor ebx, ebx
mov byte [edi], 0
mov edx, edi
lodsw ax, word [esi]
call fcn.0041cd38
inc edi
inc ebx
mov eax, dword [0x2d3fcdb]
cmp bx, word [eax*2 + 0x45e8ba]
jb 0x412e5c
popal
mov eax, dword [0x4d4d20]
mov eax, dword [eax + 0x26c73a7]
movzx eax, word [eax*2 + 0x45e8ba]
add dword [0x4dcff4], eax
call fcn.0042427c
call fcn.0041d358
xor eax, eax
mov dword [ebp - 0x1c], eax
mov esi, dword [0x4d4d20]
add esi, 0x11
mov dword [ebp - 0x48], 0x4dd000
mov eax, dword [0x4d4d20]
add eax, 0x153
mov dword [ebp - 0x4c], eax
cmp byte [esi], 0
je 0x41459f
mov ecx, dword [ebp - 0x1c]
mov eax, dword [0x4d85e4]
shr eax, cl
test al, 1
je 0x41459f
mov eax, dword [0x4d4d20]
movzx eax, byte [eax]
call fcn.00424410
mov edi, eax
test edi, edi
jbe 0x412fbd
mov eax, dword [ebp - 0x1c]
call fcn.00424410
mov dword [ebp - 4], eax
mov eax, dword [0x4d4d20]
movzx eax, byte [eax]
mov edx, eax
shl eax, 4
add eax, edx
mov edx, dword [0x4d4d20]
cmp byte [edx + eax + 0x11], 3
jne 0x412f39
mov eax, dword [0x4d4d20]
movzx eax, byte [eax]
shl eax, 0xc
shl eax, 5
mov edx, dword [0x4d4d20]
movzx eax, byte [edx + eax*8 + 0x2a087]
mov dword [ebp - 0x18], eax
jmp 0x412f61
mov eax, dword [0x4d4d20]
movzx eax, byte [eax]
shl eax, 0xc
add eax, 0x200
add edi, eax
mov eax, edi
shl eax, 5
mov edx, dword [0x4d4d20]
movzx eax, byte [edx + eax*8 + 0x178]
mov dword [ebp - 0x18], eax
cmp byte [esi], 3
je 0x412fbd
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
add eax, 0x200
add eax, dword [ebp - 4]
shl eax, 5
mov edx, dword [0x4d4d20]
movzx ecx, byte [ebp - 0x18]
mov byte [edx + eax*8 + 0x178], cl
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
add eax, 0x100
mov edx, dword [ebp - 4]
shl edx, 4
add eax, edx
mov edx, dword [0x4d4d20]
movzx edx, byte [edx]
add eax, edx
shl eax, 5
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0x173]
mov byte [eax], 7
or byte [eax + 1], 1
push 0x4000
push 0x4dd148
call sub.kernel32.dll_RtlZeroMemory
push 0x8000
push 0x4e1148
call sub.kernel32.dll_RtlZeroMemory
mov eax, dword [0x4dcfec]
mov edx, dword [ebp - 0x1c]
mov ecx, dword [0x4dcff4]
sub ecx, dword [0x4dcfec]
mov dword [eax + edx*4 + 4], ecx
mov eax, 0x4bf8
nop
mov eax, dword [ebp - 0x48]
mov edx, dword [0x4dcff4]
mov dword [eax], edx
add dword [0x4dcff4], 4
movzx eax, byte [esi]
movzx eax, byte [eax + 0x4cac6a]
call fcn.00412320
xor edi, edi
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
add eax, 0x39
add eax, 0x200
add eax, edi
shl eax, 5
mov edx, dword [0x4d4d20]
mov ecx, dword [edx + eax*8 + 0x17c]
mov eax, ecx
mov ebx, 0x3c
xor edx, edx
div ebx
mov ebx, eax
mov eax, ecx
mov ecx, 0x3c
xor edx, edx
div ecx
mov eax, edx
shl eax, 5
add bx, ax
mov eax, ebx
call fcn.00412364
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
add eax, 0x39
add eax, 0x200
add eax, edi
shl eax, 5
mov edx, dword [0x4d4d20]
movzx eax, byte [edx + eax*8 + 0x178]
call fcn.00412320
inc edi
cmp edi, 4
jne 0x41301c
cmp byte [esi], 3
jne 0x4130a5
mov eax, dword [ebp - 0x4c]
movzx eax, word [eax]
xor ax, 0x22
call fcn.00412364
jmp 0x4130b0
mov eax, dword [ebp - 0x4c]
movzx eax, word [eax]
call fcn.00412364
pushal
mov esi, fcn.00412320
mov edi, dword [ebp - 0x1c]
imul eax, edi, 0x100000
mov al, byte [eax + 0x69a1ac]
call esi
mov ebx, dword [edi*4 + 0x678a46]
shld eax, ebx, 0x10
shl ah, 7
add al, ah
call esi
shld eax, ebx, 0xe
and al, 0x80
shl bh, 6
add al, bh
call esi
lea eax, [ebx + 1]
call esi
mov eax, edi
shl eax, 0xc
add ax, 0x29f
call fcn.00412450
mov byte [ebp - 0x20], al
call esi
mov eax, edi
call fcn.00424410
mov ebx, eax
xor ebp, ebp
xor eax, eax
or ebx, ebx
je 0x413144
cmp edi, ebp
je 0x413144
mov eax, edi
shl eax, 8
add eax, ebx
shl eax, 4
add eax, ebp
shl eax, 8
mov edx, dword [eax + 0x688aac]
push dword [eax + 0x688abc]
mov al, dh
shl eax, 7
add al, 4
sub al, dl
bswap edx
shl edx, 6
add al, dl
pop edx
shl edx, 5
add al, dl
call esi
inc ebp
cmp ebp, 0xf
jbe 0x413109
popal
push esi
imul esi, dword [ebp - 0x1c], 0x100000
xor eax, eax
cdq
xor ecx, ecx
cmp byte [esi + 0x678aa7], 0x1d
je 0x41316b
cmp dh, byte [esi + 0x678aa8]
je 0x41316e
bts eax, edx
add esi, 0x100
inc cl
jne 0x41315a
inc edx
cmp edx, 0xf
jbe 0x413158
pop esi
mov dword [0x4dd040], eax
call fcn.00412364
mov dword [ebp - 0x44], 0xffffffff
mov dword [ebp - 0x18], 3
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
mov edx, eax
add edx, 0x200
add edx, dword [ebp - 0x18]
shl edx, 5
mov ecx, dword [0x4d4d20]
cmp byte [ecx + edx*8 + 0x175], 3
jne 0x413211
mov edx, eax
add edx, dword [ebp - 0x1c]
add edx, 0x100
mov ecx, dword [ebp - 0x18]
shl ecx, 4
add edx, ecx
mov dword [ebp - 0x44], edx
push 0xa9
add eax, 0x200
shl eax, 5
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0xa08b]
push eax
mov ebx, dword [ebp - 0x44]
shl ebx, 5
mov eax, dword [0x4d4d20]
lea eax, [eax + ebx*8 + 0x18b]
push eax
call sub.kernel32.dll_RtlMoveMemory
mov eax, dword [0x4d4d20]
mov byte [eax + ebx*8 + 0x174], 1
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 0xf
jne 0x413197
xor eax, eax
mov dword [ebp - 0x18], eax
lea eax, [esi - 0x10]
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x18]
mov eax, dword [0x4dd040]
shr eax, cl
test al, 1
je 0x4144dd
push 0x20
push 0x4e9148
call sub.kernel32.dll_RtlZeroMemory
mov eax, dword [0x4dcff4]
mov dword [0x4dd044], eax
push edi
or eax, 0xffffffff
lea ecx, [eax + 9]
mov edi, dword [0x4dd044]
rep stosd dword es:[edi], eax
pop edi
push pe_nt_image_headers32
push 0x4dd048
call sub.kernel32.dll_RtlZeroMemory
mov eax, dword [ebp - 0x1c]
call fcn.00424410
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jbe 0x4132b5
mov eax, dword [ebp - 0x1c]
mov edx, eax
shl eax, 0xc
add eax, edx
add eax, 0x100
mov edx, dword [ebp - 0x14]
shl edx, 4
add eax, edx
shl eax, 5
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0x173]
mov byte [eax], 7
mov byte [eax + 1], 1
movzx edx, byte [esi]
mov byte [eax + 2], dl
cmp dword [ebp - 0x18], 1
jne 0x41332e
cmp byte [esi], 3
jne 0x41332e
push 0x1000
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
add eax, 0x100
shl eax, 5
mov edx, dword [0x4d4d20]
lea edx, [edx + eax*8 + 0xf173]
push edx
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0x3173]
push eax
call sub.kernel32.dll_RtlMoveMemory
push 0xa9
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
add eax, 0x200
shl eax, 5
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0xa08b]
push eax
mov eax, dword [ebp - 0x44]
shl eax, 5
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0x18b]
push eax
call sub.kernel32.dll_RtlMoveMemory
mov eax, dword [ebp - 0x50]
cmp byte [eax], 0xb
je 0x41344f
xor eax, eax
mov dword [ebp - 0x14], eax
mov ebx, 0x4dd048
mov eax, dword [ebp - 0x1c]
shl eax, 0xc
mov edx, dword [ebp - 0x18]
shl edx, 8
add eax, edx
add eax, dword [ebp - 0x14]
shl eax, 5
mov edx, dword [0x4d4d20]
lea eax, [edx + eax*8 + 0x173]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
cmp byte [eax], 5
jne 0x4133aa
mov eax, dword [ebp - 0xc]
test byte [eax + 5], 1
je 0x413395
mov eax, dword [ebp - 0x14]
and eax, 1
add eax, dword [ebp - 0x14]
mov byte [eax + 0x4dd048], 0x85
mov byte [eax + 0x4dd049], 0x85
jmp 0x41343e
mov eax, dword [ebp - 0x14]
and eax, 1
add eax, dword [ebp - 0x14]
mov byte [eax + 0x4dd048], 5
jmp 0x41343e
mov eax, dword [ebp - 0xc]
cmp byte [eax + 1], 0
ja 0x4133eb
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax]
add al, 0xf6
sub al, 5
jb 0x4133eb
sub al, 1
je 0x4133eb
add al, 0xfd
sub al, 4
jb 0x4133eb
sub al, 6
je 0x4133eb
cmp dword [ebp - 0x18], 2
jne 0x41343e
mov eax, dword [ebp - 0x14]
sub eax, 3
jb 0x4133eb
add eax, 0xfffffff2
sub eax, 4
jb 0x4133eb
add eax, 0xffffffd8
sub eax, 0x27
jae 0x41343e
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax]
mov byte [ebx], al
cmp dword [ebp - 0x18], 2
jne 0x413425
mov eax, dword [ebp - 0xc]
cmp byte [eax], 0
jne 0x413425
mov eax, dword [ebp - 0x14]
sub eax, 3
jb 0x413419
add eax, 0xfffffff2
sub eax, 4
jb 0x413419
add eax, 0xffffffd8
sub eax, 0x27
jae 0x41341c
mov byte [ebx], 0xb
cmp dword [ebp - 0x14], 2
ja 0x413425
mov byte [ebx], 0x81
cmp byte [ebx], 7
jne 0x41343e
mov ecx, dword [ebp - 0x14]
and ecx, 0xf
mov eax, dword [0x4d85e4]
shr eax, cl
test al, 1
jne 0x41343e
mov byte [ebx], 0
inc dword [ebp - 0x14]
inc ebx
cmp dword [ebp - 0x14], 0x100
jne 0x413344
cmp dword [ebp - 0x18], 1
jne 0x413466
cmp byte [esi], 3
jne 0x413466
push 0x10
push 0x4dd138
call sub.kernel32.dll_RtlZeroMemory
xor eax, eax
mov dword [ebp - 0x14], eax
mov ebx, 0x4dd048
cmp byte [ebx], 0
je 0x41347f
call fcn.00412b88
call fcn.0041291c
inc dword [ebp - 0x14]
inc ebx
cmp dword [ebp - 0x14], 0x100
jne 0x413470
cmp dword [ebp - 0x18], 1
jne 0x4134a3
cmp dword [ebp - 0x44], 0
jl 0x4134a3
movzx eax, byte [ebp - 0x44]
mov byte [eax + 0x4dd048], 7
add dword [0x4dcff4], 0x20
xor eax, eax
mov dword [ebp - 0x14], eax
mov ebx, 0x4dd048
call fcn.00412b88
mov eax, dword [0x4dcff4]
inc eax
mov dword [0x4dcff0], eax
movzx eax, byte [ebx]
cmp eax, 0xe
jg 0x41351a
je 0x413a2a
cmp eax, 0xd
ja case.0x413531.17
jmp dword [eax*4 + 0x4134e2]
cmp eax, 0x1b
jg 0x413564
je 0x4137ae
add eax, 0xfffffff1
cmp eax, 0xa
ja case.0x413531.17
jmp dword [eax*4 + 0x413538]
cmp eax, 0x1e
jg 0x413584
je 0x413748
sub eax, 0x1c
je 0x41383e
dec eax
je 0x41388b
jmp case.0x413531.17
sub eax, 0x81
je 0x414049
sub eax, 4
je case.0x4134db.5
jmp case.0x413531.17
mov al, 0x8a
call fcn.00412320
xor eax, eax
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
movzx eax, byte [eax + 0x4cac6a]
call fcn.00412320
xor eax, eax
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
mov al, 0x87
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx edi, byte [eax + 5]
mov eax, dword [ebp - 0x10]
or eax, 0xff
shl eax, 5
mov edx, dword [0x4d4d20]
cmp byte [edx + eax*8 + 0x173], 0x1a
jne 0x41362d
mov eax, dword [ebp - 0x10]
or eax, 0xff
shl eax, 5
mov edx, dword [0x4d4d20]
cmp byte [edx + eax*8 + 0x175], 0
jbe 0x41362d
or edi, 0x80
mov eax, edi
call fcn.00412320
cmp byte [ebx], 0x13
jne 0x41365d
mov eax, dword [ebp - 0x10]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x41365d
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
cmp dword [ebp - 0x14], 0
jne 0x4136af
cmp edi, 0x40
jbe 0x4136af
mov eax, dword [ebp - 0x10]
or eax, 0xff
shl eax, 5
mov edx, dword [0x4d4d20]
test byte [edx + eax*8 + 0x178], 0x40
jbe 0x4136af
sub esp, 0x64
push 0x4b
pop eax
call fcn.00430dd4
mov edx, eax
or dh, 0x80
mov eax, esp
call fcn.00430db8
mov edx, dword [ebp - 0xc]
add edx, 0x6e
call fcn.0045a568
add esp, 0x64
mov edi, 1
jmp 0x4136b1
xor edi, edi
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
call fcn.004127a4
call fcn.0041270c
call fcn.00412628
test edi, edi
jbe 0x4136e0
mov eax, 0x4d1483
call fcn.00412464
cmp byte [ebx], 0x13
jne 0x413719
xor edi, edi
mov ecx, edi
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 7]
shr eax, cl
test al, 1
je 0x413713
mov eax, edi
shl eax, 0x18
add eax, 0x481483
call fcn.00412464
mov eax, edi
shl eax, 0x18
add eax, 0x491487
call fcn.00412464
inc edi
cmp edi, 0x10
jne 0x4136e7
mov eax, dword [ebp - 0x10]
call fcn.00412478
mov eax, dword [0x4dcff0]
test byte [eax], 0xdf
jne 0x41449c
sub dword [0x4dcff4], 3
mov eax, dword [0x4dd044]
mov edx, dword [ebp - 0x14]
call fcn.004306d4
jmp 0x41449c
push esi
mov esi, dword [ebp - 0xc]
imul eax, dword [esi + 1], 8
and eax, 0x20
mov ah, 0x97
call fcn.00412364
push 0x24
pop eax
lea edx, [esi + 0xc1]
call fcn.0041232c
mov eax, dword [esi + 5]
bswap eax
shr al, 4
call fcn.00412374
mov al, byte [esi + 8]
and al, 7
call fcn.00412320
push 0x14
pop eax
lea edx, [esi + 0xe9]
call fcn.0041232c
movzx eax, byte [esi + 0xff]
mov eax, dword [eax*2 + 0x4cabe2]
call fcn.00412364
pop esi
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
push esi
mov esi, dword [ebp - 0xc]
imul eax, dword [esi + 1], 8
and eax, 0x20
mov ah, 0x95
call fcn.00412364
push 0x10
cmp byte [esi + 0xc1], 0x2b
je 0x4137e3
mov eax, dword [0x2d3fcdb]
cmp eax, 2
jae 0x4137e3
add eax, 0x2b343230
call fcn.00412374
sub dword [esp], 4
pop eax
lea edx, [esi + 0xc1]
call fcn.0041232c
mov eax, dword [esi + 5]
bswap eax
shr al, 4
call fcn.00412374
mov ah, byte [esi + 8]
and ah, 7
mov al, byte [esi + 0x14]
call fcn.00412364
push 0x14
pop eax
lea edx, [esi + 0xdf]
call fcn.0041232c
movzx esi, byte [esi + 0xff]
or eax, 0xffffffff
dec esi
js 0x41382b
lea eax, [esi + 0xfff0]
call fcn.00412364
pop esi
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
pushal
mov ebx, fcn.00412320
mov esi, dword [ebp - 0xc]
movzx edi, byte [esi + 8]
mov al, 0x93
call ebx
imul eax, dword [esi + 1], 8
and eax, 0x20
call ebx
mov al, byte [edi + 0x45e8c2]
call ebx
push dword [esi + 9]
add esi, 0xc1
mov ebx, fcn.00412374
lodsd eax, dword [esi]
call ebx
pop eax
call fcn.00412364
lodsd eax, dword [esi]
call ebx
lodsd eax, dword [esi]
call ebx
popal
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
pushal
mov esi, fcn.00412364
xor eax, eax
mov ah, 0x94
call esi
mov edi, dword [ebp - 0xc]
mov eax, dword [edi + 5]
shl ax, 0xe
shr eax, 0xe
movzx edx, byte [edi + 8]
mov ah, byte [edx + 0x45e8c2]
call esi
mov ebx, dword [ebp - 0x14]
mov bh, byte [ebp - 0x1c]
shl ebx, 0xc
add ebx, 0x676277
mov ebp, fcn.0041232c
mov eax, 0x8000001e
mov edx, ebx
call ebp
sub edx, 0x708
call ebp
add edx, 0xc8
mov al, 0x14
call ebp
add edx, 0x190
add al, al
call ebp
add edx, 0xc8
mov al, 0x1e
call ebp
mov eax, dword [edi + 0x16]
call esi
xor eax, eax
inc eax
push eax
call esi
pop eax
push eax
call esi
lea eax, [ebx - 0x294]
call fcn.004309b4
call esi
mov al, byte [edi + 7]
call fcn.00412320
lea edx, [ebx - 0x320]
mov eax, 0x80000032
call ebp
push edi
mov edi, 0xc8
add edx, edi
call ebp
add edx, edi
call ebp
add edx, edi
call ebp
pop edi
pop eax
mov edx, 0x4cac8a
call ebp
call ebp
popal
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
mov al, 0x8e
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
shl eax, 6
mov edx, dword [ebp - 0xc]
add al, byte [edx + 9]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x4139a0
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
call fcn.004127a4
call fcn.0041270c
call fcn.00412628
mov eax, dword [ebp - 0x10]
call fcn.00412478
mov eax, dword [0x4dcff0]
test byte [eax], 0xdf
jne 0x41449c
sub dword [0x4dcff4], 3
mov eax, dword [0x4dd044]
mov edx, dword [ebp - 0x14]
call fcn.004306d4
jmp 0x41449c
movzx eax, byte [ebx]
add al, 0x78
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 4
shl eax, 3
call fcn.00412320
cmp byte [ebx], 0x19
jae 0x413a1d
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
dec eax
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 7]
and al, 1
mov byte [ebp - 0x3d], al
mov al, 0x88
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
cmp byte [ebp - 0x3d], 0
setne dl
shl edx, 7
add al, dl
call fcn.00412320
mov eax, dword [ebp - 0x10]
and eax, 0xf000
mov edx, dword [ebp - 0x10]
and edx, 0xff0
shr edx, 4
add eax, edx
shl eax, 5
mov edx, dword [0x4d4d20]
cmp byte [edx + eax*8 + 0x10175], 3
jne 0x413a93
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 5]
and al, 1
call fcn.00412320
jmp 0x413aa3
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 9]
shr eax, 0xe
and al, 0xc
call fcn.00412320
cmp byte [ebp - 0x3d], 0
jbe 0x413ab2
movzx eax, byte [ebp - 0x3d]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 7]
and al, 1
mov byte [ebp - 0x3d], al
mov al, 0x88
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
cmp byte [ebp - 0x3d], 0
setne dl
shl edx, 7
add al, dl
call fcn.00412320
mov edx, dword [ebp - 0xc]
mov ecx, dword [edx + 5]
and cx, 0x101
movzx eax, cl
add eax, eax
add al, ch
mov edx, dword [ebp - 0x14]
cmp byte [edx + 0x4dd048], 0x16
jne 0x413b21
mov al, 1
mov edx, dword [ebp - 0x10]
mov dl, 0xff
shl edx, 8
add edx, 0x678aa7
cmp byte [edx], 0x1a
jne 0x413b3b
cmp byte [edx + 2], ah
je 0x413b3b
or al, 0x80
call fcn.00412320
cmp byte [ebp - 0x3d], 0
jbe 0x413b4f
movzx eax, byte [ebp - 0x3d]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
call fcn.004127a4
call fcn.0041270c
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov al, 0x89
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 4
shl eax, 3
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
movzx eax, byte [eax + 0x4cac6e]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x413bc7
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.004127a4
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov al, 0x84
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 4
shl eax, 3
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 9]
add eax, eax
add al, 2
call fcn.00412320
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 9]
shr ax, 8
add eax, eax
add al, 2
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x413c45
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 9]
shr eax, 0x11
test al, 1
je 0x413cec
mov edi, 0x1e8480
mov eax, dword [0x4d4d20]
add eax, 0x1a7da37
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x54]
movzx eax, word [eax]
test ax, ax
jne 0x413c8a
mov edx, dword [ebp - 0x54]
cmp word [edx + 2], 0
je 0x413cec
mov edx, dword [ebp - 0x54]
cmp ax, word [edx + 2]
je 0x413ce5
mov edx, dword [ebp - 0x54]
movzx edx, word [edx + 2]
cmp edx, dword [ebp - 0x10]
jne 0x413ce5
movzx edx, ax
shl edx, 5
mov ecx, dword [0x4d4d20]
movzx edx, byte [ecx + edx*8 + 0x173]
sub dl, 4
je 0x413ccf
sub dl, 6
je 0x413ccf
sub dl, 4
je 0x413ccf
sub dl, 2
je 0x413ccf
add dl, 0xfe
sub dl, 5
jae 0x413ce5
movzx eax, ax
shl eax, 0x10
add eax, 0x20
add eax, 3
add eax, 0x600
call fcn.00412464
add dword [ebp - 0x54], 5
dec edi
jne 0x413c75
call fcn.0041269c
call fcn.004127a4
call fcn.00412628
call fcn.0041270c
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 7]
and al, 1
mov byte [ebp - 0x3d], al
mov al, 0x99
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
cmp byte [ebp - 0x3d], 0
setne dl
shl edx, 7
add al, dl
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
dec eax
sub al, 3
jb 0x413d5f
add al, 0xea
sub al, 3
jb 0x413d5f
xor eax, eax
jmp 0x413d61
mov al, 1
mov byte [ebp - 0x1e], al
cmp byte [ebp - 0x1e], 0
jbe 0x413db2
add byte [ebp - 0x1e], 0x10
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 9]
mov edx, dword [ebp - 0xc]
cmp eax, dword [edx + 0xd]
jne 0x413da1
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 9]
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + 2]
lea edx, [edx + edx*2]
cmp eax, dword [edx*2 + 0x4ca94f]
jne 0x413d9b
add byte [ebp - 0x1e], 0x20
jmp 0x413db2
add byte [ebp - 0x1e], 4
jmp 0x413db2
add byte [ebp - 0x1e], 8
mov eax, dword [ebp - 0xc]
test byte [eax + 0x11], 0x40
jbe 0x413db2
add byte [ebp - 0x1e], 2
mov eax, dword [ebp - 0x10]
call fcn.004125cc
add al, byte [ebp - 0x1e]
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + 0x14]
shl edx, 7
add al, dl
call fcn.00412320
test byte [ebp - 0x1e], 0xc
jbe 0x413df5
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [edx + 9]
rol eax, 0x10
call fcn.00412374
pop edx
test byte [ebp - 0x1e], 8
je 0x413df5
mov eax, dword [edx + 0xd]
rol eax, 0x10
call fcn.00412374
cmp byte [ebp - 0x3d], 0
jbe 0x413e04
movzx eax, byte [ebp - 0x3d]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x413e28
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
call fcn.004127a4
call fcn.0041270c
call fcn.00412628
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 7]
and al, 1
mov byte [ebp - 0x3d], al
mov al, 0x85
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
cmp byte [ebp - 0x3d], 0
setne dl
shl edx, 7
add al, dl
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
movzx eax, byte [eax + 0x45e8e6]
and al, 0x7f
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
mov edx, dword [0x4d4ce0]
movzx eax, byte [edx + eax]
shr eax, 7
mov byte [ebp - 0x1e], al
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
cmp byte [eax + 0x45e8e6], 0x80
jae 0x413f6c
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x20
je 0x413ed8
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x21
jne 0x413eec
mov eax, dword [ebp - 0xc]
or dword [eax + 9], 0x4000
mov eax, dword [ebp - 0xc]
or dword [eax + 0xd], 0x4000
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x1f
jne 0x413f09
mov eax, dword [ebp - 0xc]
and dword [eax + 9], 0x180
mov eax, dword [ebp - 0xc]
and dword [eax + 0xd], 0x180
add byte [ebp - 0x1e], 0x10
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
mov edx, dword [0x4d4ce0]
movzx eax, byte [edx + eax]
and al, 0x7f
cmp al, 0x32
jbe 0x413f6c
mov eax, dword [ebp - 0xc]
mov eax, dword [eax + 9]
mov edx, dword [ebp - 0xc]
cmp eax, dword [edx + 0xd]
je 0x413f3b
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x23
jne 0x413f5b
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
call fcn.00430ec0
mov edx, dword [ebp - 0xc]
cmp eax, dword [edx + 9]
jne 0x413f55
add byte [ebp - 0x1e], 0x20
jmp 0x413f6c
add byte [ebp - 0x1e], 4
jmp 0x413f6c
add byte [ebp - 0x1e], 8
mov eax, dword [ebp - 0xc]
test byte [eax + 0x11], 0x40
jbe 0x413f6c
add byte [ebp - 0x1e], 2
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x24
jne 0x413f79
or byte [ebp - 0x1e], 0x20
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x23
jne 0x413f8f
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 9]
shr eax, 7
add byte [ebp - 0x1e], al
mov eax, dword [ebp - 0xc]
cmp byte [eax + 2], 0x1e
jne 0x413fa5
mov eax, dword [ebp - 0xc]
cmp dword [eax + 9], 0
jge 0x413fa5
mov byte [ebp - 0x1e], 0x30
mov eax, dword [ebp - 0x10]
call fcn.004125cc
add al, byte [ebp - 0x1e]
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + 0x14]
shl edx, 7
add al, dl
call fcn.00412320
test byte [ebp - 0x1e], 0xc
jbe 0x413fe8
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [edx + 9]
rol eax, 0x10
call fcn.00412374
pop edx
test byte [ebp - 0x1e], 8
je 0x413fe8
mov eax, dword [edx + 0xd]
rol eax, 0x10
call fcn.00412374
cmp byte [ebp - 0x3d], 0
jbe 0x413ff7
movzx eax, byte [ebp - 0x3d]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x41401b
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
call fcn.004127a4
call fcn.0041270c
call fcn.00412628
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
movzx eax, byte [ebp - 0x14]
add al, 0x10
call fcn.00412320
xor eax, eax
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
pushal
mov esi, dword [ebp - 0xc]
movzx ebx, byte [esi + 2]
mov edi, fcn.00412320
mov eax, dword [ebx + 0x45e911]
mov ecx, dword [ebp - 0x1c]
imul edx, ecx, 0x11
cmp byte [edx + 0x678945], 3
jne 0x414092
cmp al, 1
jne 0x414092
mov al, 0xa
mov bl, 0xb
call edi
imul eax, dword [esi + 1], 8
and eax, 0x20
call edi
mov eax, dword [esi + 5]
cmp bl, 3
jne 0x4140bf
mov ecx, dword [ebp - 0x1c]
imul edx, ecx, 0x11
cmp byte [edx + 0x678945], 3
jne 0x4140c9
shl ecx, 0x14
mov eax, dword [ecx + 0x6a29bb]
jmp 0x4140c9
cmp bl, 2
je 0x4140c9
cmp bl, 0xa
jne 0x4140e7
shl al, 7
shl ax, 7
shr eax, 0xe
cmp bl, 3
jne 0x4140e5
and al, 0xfe
push eax
call fcn.004169e0
pop edx
or dl, byte [eax]
mov eax, edx
call edi
cmp bl, 5
jb 0x4140f9
cmp bl, 9
ja 0x4140f9
mov eax, dword [ebx + 0x45e919]
call edi
dec bl
jne 0x414112
imul eax, dword [ebp - 0x1c], 0x10
add eax, dword [ebp - 0x14]
mov al, byte [eax + 0x2d3fcfb]
dec al
js 0x414110
dec eax
dec eax
call edi
mov eax, dword [ebp - 0x10]
call fcn.00412450
cmp al, byte [ebp - 0x20]
je 0x414128
call edi
mov eax, dword [0x4dcff0]
inc byte [eax]
popal
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.004127a4
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov al, 0x98
call fcn.00412320
xor eax, eax
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 6]
and al, 1
shl eax, 3
inc eax
call fcn.00412320
mov eax, dword [ebp - 0x38]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x41418c
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
call fcn.004125c0
call fcn.004127a4
mov eax, dword [ebp - 0x3c]
call fcn.00412478
jmp 0x41449c
mov al, 0x8d
call fcn.00412320
xor edx, edx
mov ecx, dword [ebp - 0x14]
cmp byte [ecx + 0x4dd048], 5
sete al
and ecx, 3
je 0x4141c7
cmp ecx, 3
jne 0x4141c5
inc dh
inc dh
neg edx
add edx, dword [ebp - 0xc]
mov ah, byte [edx + 1]
and ah, 4
shl ah, 3
call fcn.00412364
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x10]
and eax, 0xfffc
mov edx, dword [ebp - 0x10]
shr edx, 1
and edx, 1
add eax, edx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
call fcn.00412450
mov byte [ebp - 0x1f], al
movzx eax, byte [ebp - 0x1f]
cmp al, byte [ebp - 0x20]
je 0x414219
mov eax, dword [0x4dcff0]
inc byte [eax]
movzx eax, byte [ebp - 0x1f]
call fcn.00412320
mov eax, dword [ebp - 0x10]
and eax, 3
dec eax
je 0x414227
dec eax
je 0x41422c
jmp 0x41422f
inc dword [ebp - 0x10]
jmp 0x41422f
dec dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
cmp byte [ebx], 5
jne 0x414248
call fcn.004127a4
jmp 0x414253
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x10], eax
call fcn.004127a4
mov eax, dword [ebp - 0x3c]
call fcn.00412478
jmp 0x41449c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 7]
and al, 1
mov byte [ebp - 0x3d], al
mov al, 0x86
call fcn.00412320
cmp byte [ebp - 0x3d], 0
setne al
shl eax, 7
call fcn.00412320
cmp byte [ebp - 0x3d], 0
jbe 0x414291
movzx eax, byte [ebp - 0x3d]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
jmp 0x41449c
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 7]
and al, 1
mov byte [ebp - 0x3d], al
mov al, 0x88
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
and al, 0xc
shl eax, 3
cmp byte [ebp - 0x3d], 0
setne dl
shl edx, 7
add al, dl
call fcn.00412320
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 6]
and al, 1
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + 5]
and dl, 1
add edx, edx
add al, dl
mov edx, dword [ebp - 0xc]
movzx edx, byte [edx + 7]
and dl, 1
shl edx, 4
add al, dl
call fcn.00412320
cmp byte [ebp - 0x3d], 0
jbe 0x414308
movzx eax, byte [ebp - 0x3d]
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.0041269c
call fcn.004127a4
call fcn.0041270c
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
pushal
mov edi, fcn.00412320
mov al, 0x8b
call edi
xor eax, eax
call edi
mov eax, dword [ebp - 0xc]
mov word [eax + 3], 0x707
imul ebx, dword [ebp - 0x1c], 0xa
add bl, byte [eax + 2]
shl ebx, 0xe
mov al, byte [eax + 5]
call edi
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
popal
call fcn.004127a4
call fcn.00412628
call fcn.0041269c
call fcn.0041270c
mov eax, dword [ebp - 0x10]
call fcn.00412478
mov eax, dword [0x4dcff0]
cmp byte [eax], 0
jne 0x41449c
sub dword [0x4dcff4], 3
mov eax, dword [0x4dd044]
mov edx, dword [ebp - 0x14]
call fcn.004306d4
jmp 0x41449c
mov al, 0x86
call fcn.00412320
xor eax, eax
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
call fcn.004127a4
mov eax, dword [ebp - 0x10]
call fcn.00412478
mov eax, dword [0x4dcff0]
cmp byte [eax], 0
jne 0x41449c
sub dword [0x4dcff4], 2
mov eax, dword [0x4dd044]
mov edx, dword [ebp - 0x14]
call fcn.004306d4
jmp 0x41449c
mov al, 0x86
call fcn.00412320
xor eax, eax
call fcn.00412320
mov eax, dword [ebp - 0x10]
call fcn.00412384
call fcn.004125c0
pushal
mov esi, dword [ebp - 0x1c]
shl esi, 0x14
mov edi, esi
shl edi, 8
mov eax, dword [ebp - 0xc]
movzx ebx, byte [eax + 2]
mov ebp, fcn.00412464
dec ebx
jne 0x41443d
cmp byte [esi + 0x69b6af], bl
je 0x41443d
lea eax, [edi + 0x22c0083]
call ebp
cmp ebx, 4
jne 0x414458
cmp byte [esi + 0x69b7af], bh
je 0x414458
lea eax, [edi + 0x22d0083]
call ebp
mov ax, 0x187
call ebp
sub ebx, 0xa
jne 0x414479
cmp byte [esi + 0x69b8af], bh
je 0x414479
lea eax, [edi + 0x22e0083]
call ebp
mov ax, 0x187
call ebp
mov ax, 0x623
call ebp
dec ebx
popal
call fcn.004127a4
call fcn.0041270c
mov eax, dword [ebp - 0x10]
call fcn.00412478
jmp 0x41449c
mov eax, dword [0x4dd044]
mov edx, dword [ebp - 0x14]
call fcn.004306d4
inc dword [ebp - 0x14]
inc ebx
cmp dword [ebp - 0x14], 0x100
jne 0x4134b4
pushal
imul esi, dword [ebp - 0x1c], 0x10
add esi, dword [ebp - 0x18]
shl esi, 0x10
xor ebx, ebx
xor edi, edi
bt dword [0x4e9148], edi
jae 0x4144d7
push 0xa9
lea eax, [esi + ebx + 0x678abf]
push eax
call sub.kernel32.dll_RtlZeroMemory
inc edi
inc bh
jne 0x4144bc
popal
inc dword [ebp - 0x18]
inc dword [ebp - 0x50]
cmp dword [ebp - 0x18], 0x10
jne 0x413229
cmp dword [ebp - 0x44], 0
jl 0x41451d
push 0xa9
mov ebx, dword [ebp - 0x44]
shl ebx, 5
mov eax, dword [0x4d4d20]
lea eax, [eax + ebx*8 + 0x18b]
push eax
call sub.kernel32.dll_RtlZeroMemory
mov eax, dword [0x4d4d20]
mov byte [eax + ebx*8 + 0x174], 0
pushal
mov esi, dword [ebp - 0x1c]
shl esi, 0x14
add esi, 0x6a2ac1
mov edi, dword [0x4dcff4]
movzx ecx, byte [esi - 1]
jecxz 0x41453a
push esi
rep movsb byte es:[edi], byte [esi]
pop esi
add esi, 0x53
lodsb al, byte [esi]
movzx ecx, al
dec al
js 0x41454d
cmp byte [esi - 0x55], ch
je 0x41454d
mov al, 0xd
stosb byte es:[edi], al
jecxz 0x414551
rep movsb byte es:[edi], byte [esi]
xor eax, eax
stosb byte es:[edi], al
mov dword [0x4dcff4], edi
popal
mov eax, dword [0x4dcfec]
mov edx, dword [ebp - 0x1c]
push dword [eax + edx*4 + 4]
mov eax, dword [0x4dcff4]
pop edx
sub eax, edx
sub eax, dword [0x4dcfec]
call fcn.004122ec
mov edx, dword [ebp - 0x48]
mov edx, dword [edx]
mov dword [edx], eax
mov eax, dword [0x4dcfec]
mov edx, dword [ebp - 0x1c]
mov eax, dword [eax + edx*4 + 4]
call fcn.004122ec
mov edx, dword [0x4dcfec]
mov ecx, dword [ebp - 0x1c]
mov dword [edx + ecx*4 + 4], eax
inc dword [ebp - 0x1c]
add dword [ebp - 0x4c], 2
add dword [ebp - 0x48], 4
add esi, 0x11
cmp dword [ebp - 0x1c], 0x10
jne 0x412ebf
mov eax, dword [0x4dcff4]
mov edx, dword [0x4dcfec]
sub eax, edx
add eax, 7
and al, 0xfc
mov ecx, eax
bswap eax
mov dword [edx + 0x44], eax
bswap eax
shr eax, 9
mov dword [0x4e9174], eax
push ebx
xor eax, eax
shr ecx, 2
dec ecx
mov ebx, dword [edx + ecx*4]
bswap ebx
add eax, ebx
loop 0x4145e1
neg eax
bswap eax
mov dword [edx], eax
pop ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret