Function at 0x417738
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xe4
mov edx, dword [esp + 0x100]
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0x108]
mov dword [esp + 0x28], 0xffffffff
add eax, dword [edx]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10c]
mov eax, dword [eax]
add edi, eax
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x110]
and edi, 4
mov dword [esp + 0x44], edi
jne 0x417435
mov edx, dword [esp + 0x108]
sub edx, dword [esp + 0x104]
lea eax, [eax + edx - 1]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
lea edi, [eax + 1]
test eax, edi
jne 0x417450
mov eax, dword [esp + 0x104]
cmp dword [esp + 0x108], eax
jae 0x417474
mov eax, dword [esp + 0x10c]
mov dword [eax], 0
mov eax, dword [esp + 0x100]
mov dword [eax], 0
mov eax, 0xfffffffd
jmp 0x418e67
mov eax, dword [esp + 0xf8]
mov eax, dword [eax + 4]
mov ebx, eax
mov eax, dword [esp + 0xf8]
mov eax, dword [eax + 0x38]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xf8]
mov eax, dword [eax + 0x20]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xf8]
mov edx, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xf8]
mov eax, dword [eax + 0x3c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xf8]
cmp dword [eax], 0x35
ja case.0x4174cd.4
mov eax, dword [eax]
jmp dword [eax*4 + 0x424754]
test byte [esp + 0x110], 1
mov eax, dword [esp + 0xf8]
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [eax + 0x1c], 1
mov dword [eax + 0x10], 1
je 0x417703
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x4175a9
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
xor edx, edx
mov dword [esp + 0x10], 0
xor ebx, ebx
test byte [esp + 0x110], 2
mov eax, dword [esp + 0xf8]
je 0x417585
mov dword [eax], 1
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
jmp 0x417619
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jae 0x417532
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0xf8]
lea ebp, [eax + 1]
movzx eax, byte [eax]
mov dword [esi + 8], eax
jmp 0x4175dc
mov dword [eax + 8], 0
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
mov ebp, dword [esp + 0xfc]
jae 0x41763c
jmp 0x41764c
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
xor ebx, ebx
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
lea ebp, [eax + 1]
movzx eax, byte [eax]
mov dword [edx + 8], eax
xor edx, edx
cmp ebp, dword [esp + 8]
jb 0x41764c
jmp 0x4175f8
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417623
mov ebp, dword [esp + 0xfc]
test byte [esp + 0x110], 2
je 0x41763c
mov eax, dword [esp + 0xf8]
mov dword [eax], 2
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov ecx, 1
jmp 0x418ced
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
lea ebp, [eax + 1]
movzx eax, byte [eax]
mov dword [edx + 0xc], eax
jmp 0x41765b
mov eax, dword [esp + 0xf8]
mov dword [eax + 0xc], 0
jmp 0x41765b
movzx eax, byte [ebp]
mov edx, dword [esp + 0xf8]
inc ebp
mov dword [edx + 0xc], eax
mov eax, dword [esp + 0xf8]
xor edx, edx
mov esi, 0x1f
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp], eax
mov eax, ecx
shl eax, 8
add eax, dword [esp]
div esi
mov eax, 1
test edx, edx
jne 0x417699
test byte [esp], 0x20
jne 0x417699
mov eax, ecx
and eax, 0xf
cmp eax, 8
setne al
movzx eax, al
cmp dword [esp + 0x44], 0
mov edx, eax
jne 0x4176c4
shr ecx, 4
mov edx, 1
add ecx, 8
mov esi, edx
shl esi, cl
cmp esi, 0x8000
ja 0x4176c2
shr edi, cl
xor edx, edx
test edi, edi
sete dl
or edx, eax
test edx, edx
je 0x4176f2
mov edx, 1
jmp 0x4176d6
mov ebp, dword [esp + 0xfc]
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x24
mov eax, dword [esp + 0x108]
mov dword [esp], eax
jmp 0x418cea
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, ebx
jmp 0x4177a3
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
xor edx, edx
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0
xor ebx, ebx
mov dword [esp + 0x10], 0
mov dword [esp], eax
cmp ebp, dword [esp + 8]
jb 0x41778b
jmp 0x417756
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417772
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x417792
mov eax, dword [esp + 0xf8]
mov dword [eax], 3
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x417794
movzx eax, byte [ebp]
inc ebp
jmp 0x417794
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
cmp eax, 2
jbe 0x417730
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
mov esi, ebx
sub esi, 3
shr dword [esp + 4], 3
mov ebx, esi
and eax, 7
mov dword [edi + 0x14], eax
shr eax, 1
test eax, eax
mov dword [edi + 0x18], eax
jne 0x417b77
mov eax, esi
and eax, 7
cmp esi, eax
jae 0x417855
cmp ebp, dword [esp + 8]
jb 0x417836
jmp 0x417801
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x41781d
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x41783d
mov eax, dword [esp + 0xf8]
mov dword [eax], 5
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x41783f
movzx eax, byte [ebp]
inc ebp
jmp 0x41783f
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
and eax, 7
cmp ebx, eax
jmp 0x4177d9
mov ecx, ebx
mov eax, ebx
xor edx, edx
and ecx, 7
shr dword [esp + 4], cl
and eax, 0xfffffff8
mov ebx, eax
test ebx, ebx
mov eax, ebx
je 0x41790e
cmp eax, 7
ja 0x4178eb
cmp ebp, dword [esp + 8]
jb 0x4178d1
jmp 0x41789c
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x4178b8
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x4178d8
mov eax, dword [esp + 0xf8]
mov dword [eax], 6
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x4178da
movzx eax, byte [ebp]
inc ebp
jmp 0x4178da
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
jmp 0x417871
mov al, byte [esp + 4]
mov edi, dword [esp + 0xf8]
shr dword [esp + 4], 8
mov byte [edi + edx + 0x2920], al
mov eax, ebx
sub eax, 8
mov ebx, eax
jmp 0x417992
cmp dword [esp + 8], ebp
ja 0x417980
jmp 0x417934
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417950
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
mov eax, dword [esp + 0xf8]
je 0x417976
mov dword [eax], 7
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0xf8]
lea ebp, [eax + 1]
mov al, byte [eax]
mov byte [edi + edx + 0x2920], al
mov eax, dword [esp + 0x108]
mov dword [esp], eax
jmp 0x417992
mov byte [eax + edx + 0x2920], 0
jmp 0x417992
mov al, byte [ebp]
mov edi, dword [esp + 0xf8]
inc ebp
mov byte [edi + edx + 0x2920], al
inc edx
cmp edx, 3
jbe 0x417867
mov eax, dword [esp + 0xf8]
movzx edx, word [eax + 0x2920]
mov ax, word [eax + 0x2922]
not eax
movzx eax, ax
cmp edx, eax
jne 0x4179d0
jmp 0x417aab
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x27
jmp 0x418cea
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417a1c
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x417a35
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x33
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], edi
movzx eax, byte [eax]
jmp 0x417a37
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
cmp eax, 7
ja 0x417a58
cmp ebp, dword [esp + 8]
jae 0x417a00
movzx eax, byte [ebp]
inc ebp
jmp 0x417a37
movzx eax, byte [esp + 4]
shr dword [esp + 4], 8
mov dword [esp + 0x10], eax
mov eax, ebx
sub eax, 8
mov ebx, eax
jmp 0x417a80
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov esi, dword [esp + 0x18]
cmp dword [esp], esi
jb 0x417a9b
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x34
jmp 0x418a1d
mov edi, dword [esp]
mov al, byte [esp + 0x10]
dec edx
mov byte [edi], al
mov eax, edi
inc eax
mov dword [esp], eax
test edx, edx
je 0x417b6a
test ebx, ebx
je 0x417b6a
mov eax, ebx
jmp 0x417a46
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov esi, dword [esp + 0x18]
cmp dword [esp], esi
jb 0x417b1f
mov eax, dword [esp + 0xf8]
mov dword [eax], 9
jmp 0x418a1d
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x28
jmp 0x418cea
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
cmp ebp, dword [esp + 8]
jb 0x417b41
test byte [esp + 0x110], 2
je 0x417afc
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x26
jmp 0x417619
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 8]
sub ecx, dword [esp]
sub eax, ebp
cmp eax, ecx
jbe 0x417b54
mov eax, ecx
cmp eax, edx
jbe 0x417b5a
mov eax, edx
mov edi, dword [esp]
mov esi, ebp
mov ecx, eax
rep movsb byte es:[edi], byte [esi]
sub edx, eax
mov ebp, esi
mov dword [esp], edi
test edx, edx
jne 0x417ad0
jmp 0x418af0
cmp eax, 3
jne 0x417ba1
jmp 0x417b8f
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0xa
jmp 0x418cea
dec eax
jne 0x417c14
mov eax, dword [esp + 0xf8]
mov ecx, 0x20
mov dword [eax + 0x2c], 0x120
mov dword [eax + 0x30], 0x20
lea esi, [eax + 0x40]
add eax, 0xde0
mov edi, eax
mov al, 5
rep stosb byte es:[edi], al
xor eax, eax
mov byte [esi + eax], 8
inc eax
cmp eax, 0x90
jne 0x417bce
mov byte [esi + eax], 9
inc eax
cmp eax, 0x100
jne 0x417bda
mov byte [esi + eax], 7
inc eax
cmp eax, 0x118
jne 0x417be6
mov edi, dword [esp + 0xf8]
lea ecx, [edi + 0x158]
mov byte [ecx + eax - 0x118], 8
inc eax
cmp eax, 0x120
jne 0x417bff
jmp 0x418106
xor edx, edx
movsx eax, byte [edx + 0x42474b]
cmp eax, ebx
jbe 0x417c9f
cmp ebp, dword [esp + 8]
jb 0x417c7c
jmp 0x417c47
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417c63
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x417c83
mov eax, dword [esp + 0xf8]
mov dword [eax], 0xb
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x417c85
movzx eax, byte [ebp]
inc ebp
jmp 0x417c85
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
movsx eax, byte [edx + 0x42474b]
cmp ebx, eax
jb 0x417c21
movsx esi, byte [edx + 0x42474b]
mov eax, 1
mov edi, ebx
mov ecx, esi
sub edi, esi
shl eax, cl
mov ebx, edi
mov edi, dword [esp + 0xf8]
dec eax
and eax, dword [esp + 4]
shr dword [esp + 4], cl
add eax, dword [edx*4 + 0x424cb0]
mov dword [edi + edx*4 + 0x2c], eax
inc edx
cmp edx, 2
jbe 0x417c16
lea edx, [edi + 0x1b80]
mov ecx, 0x48
xor eax, eax
mov edi, edx
xor edx, edx
rep stosd dword es:[edi], eax
jmp 0x417d91
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417d2c
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x417d45
mov eax, dword [esp + 0xf8]
mov dword [eax], 0xe
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x417d47
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
cmp eax, 2
ja 0x417d68
cmp ebp, dword [esp + 8]
jae 0x417d10
movzx eax, byte [ebp]
inc ebp
jmp 0x417d47
mov eax, ebx
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0xf8]
sub eax, 3
shr dword [esp + 4], 3
inc edx
mov ebx, eax
movzx eax, byte [edx + 0x424c9b]
and ecx, 7
mov byte [edi + eax + 0x1b80], cl
mov eax, dword [esp + 0xf8]
cmp edx, dword [eax + 0x34]
jae 0x417da1
mov eax, ebx
jmp 0x417d56
mov dword [eax + 0x34], 0x13
jmp 0x418106
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x23
jmp 0x418cea
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417e0a
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x417e23
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x10
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], edi
movzx eax, byte [eax]
jmp 0x417e25
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
cmp eax, 0xe
mov ebx, eax
ja 0x417f2d
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0x1ca0]
test eax, eax
js 0x417e68
sar eax, 9
je 0x417ea3
cmp ebx, eax
jae 0x417f2d
jmp 0x417ea3
cmp ebx, 0xa
jbe 0x417ea3
mov ecx, 0xa
mov esi, dword [esp + 4]
not eax
lea edi, [ecx + 1]
shr esi, cl
and esi, 1
lea eax, [esi + eax + 0x1250]
mov esi, dword [esp + 0xf8]
movsx eax, word [esi + eax*2]
test eax, eax
jns 0x417f2d
lea esi, [ecx + 2]
mov ecx, edi
cmp ebx, esi
jae 0x417e72
cmp ebp, dword [esp + 8]
jae 0x417dee
movzx eax, byte [ebp]
inc ebp
jmp 0x417e25
mov ecx, 0xa
mov edi, dword [esp + 4]
lea esi, [ecx + 1]
not eax
shr edi, cl
mov ecx, edi
mov edi, dword [esp + 0xf8]
and ecx, 1
lea eax, [ecx + eax + 0x1250]
mov ecx, esi
movsx eax, word [edi + eax*2]
test eax, eax
js 0x417ebc
mov edi, ebx
mov ecx, esi
shr dword [esp + 4], cl
sub edi, esi
cmp eax, 0xf
mov dword [esp + 0x10], eax
mov ebx, edi
jg 0x417f5d
mov al, byte [esp + 0x10]
mov edi, dword [esp + 0xf8]
mov byte [edi + edx + 0x2924], al
inc edx
mov eax, dword [esp + 0xf8]
mov ecx, dword [eax + 0x2c]
mov eax, dword [eax + 0x30]
lea esi, [ecx + eax]
cmp edx, esi
jae 0x4180b2
cmp ebx, 0xe
jbe 0x41807d
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0x1ca0]
test eax, eax
mov ecx, eax
js 0x417eb7
sar eax, 9
mov esi, eax
mov eax, ecx
and eax, 0x1ff
jmp 0x417ee4
cmp dword [esp + 0x10], 0x10
jne 0x417f95
test edx, edx
jne 0x417f95
mov dword [esp + 0x10], 0x10
jmp 0x417f83
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x11
jmp 0x418cea
movsx eax, byte [eax + 0x424683]
mov esi, eax
mov dword [esp + 0xc], eax
cmp ebx, esi
jae 0x41801f
cmp ebp, dword [esp + 8]
jb 0x418001
jmp 0x417fcc
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x417fe8
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x418008
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x12
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], edi
movzx eax, byte [eax]
jmp 0x41800a
movzx eax, byte [ebp]
inc ebp
jmp 0x41800a
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
cmp dword [esp + 0xc], eax
mov ebx, eax
ja 0x417fa6
mov cl, byte [esp + 0xc]
mov eax, 1
mov edi, dword [esp + 0xc]
shl eax, cl
dec eax
and eax, dword [esp + 4]
shr dword [esp + 4], cl
mov esi, eax
mov eax, ebx
sub eax, edi
mov ebx, eax
mov eax, dword [esp + 0x10]
movsx eax, byte [eax + 0x42473f]
add esi, eax
xor eax, eax
cmp dword [esp + 0x10], 0x10
jne 0x418064
mov eax, dword [esp + 0xf8]
movzx eax, byte [eax + edx + 0x2923]
mov edi, dword [esp + 0xf8]
mov ecx, esi
lea edi, [edi + edx + 0x2924]
add edx, esi
rep stosb byte es:[edi], al
jmp 0x417f0c
mov eax, dword [esp + 8]
sub eax, ebp
dec eax
jle 0x417e3d
movzx eax, byte [ebp + 1]
lea ecx, [ebx + 8]
add ebp, 2
shl eax, cl
mov cl, bl
mov esi, eax
movzx eax, byte [ebp - 2]
shl eax, cl
or eax, esi
or dword [esp + 4], eax
mov eax, ebx
add eax, 0x10
mov ebx, eax
jmp 0x417f2d
jne 0x4180c7
jmp 0x4180d9
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x15
jmp 0x418cea
mov edi, dword [esp + 0xf8]
lea esi, [edi + 0x2924]
add edi, 0x40
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0xf8]
mov ecx, eax
add edi, 0xde0
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0xf8]
dec dword [eax + 0x18]
mov eax, dword [esp + 0xf8]
mov eax, dword [eax + 0x18]
test eax, eax
mov dword [esp + 0x1c], eax
js 0x41836c
lea esi, [esp + 0x60]
xor eax, eax
mov ecx, 0x10
mov edi, esi
imul esi, dword [esp + 0x1c], 0xda0
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0xf8]
mov ecx, 0x200
lea edi, [edi + esi + 0x160]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0xf8]
mov ecx, 0x120
lea edi, [edi + esi + 0x960]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0xf8]
mov edi, dword [esp + 0xf8]
mov eax, dword [eax + 0x18]
add esi, edi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x48], eax
mov eax, dword [edi + eax*4 + 0x2c]
mov dword [esp + 0x4c], eax
xor eax, eax
cmp eax, dword [esp + 0x4c]
je 0x418198
mov esi, dword [esp + 0x3c]
movzx ecx, byte [esi + eax + 0x40]
inc eax
inc dword [esp + ecx*4 + 0x60]
jmp 0x418182
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
xor ecx, ecx
xor edi, edi
mov eax, 1
mov esi, dword [esp + eax*4 + 0x60]
inc eax
add ecx, esi
add edi, esi
add ecx, ecx
cmp eax, 0x10
mov dword [esp + eax*4 + 0xa0], ecx
jne 0x4181b7
cmp ecx, 0x10000
je 0x4181df
cmp edi, 1
ja 0x417dbe
imul eax, dword [esp + 0x1c], 0x6d0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0x4c]
cmp dword [esp + 0x24], esi
je 0x418351
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x24]
movzx eax, byte [eax + esi + 0x40]
test eax, eax
mov byte [esp + 0x2c], al
mov edi, eax
je 0x418348
mov esi, dword [esp + eax*4 + 0xa0]
mov dword [esp + 0x50], edi
mov dword [esp + 0x1c], 0
lea eax, [esi + 1]
mov dword [esp + edi*4 + 0xa0], eax
mov eax, dword [esp + 0x1c]
mov ecx, esi
shr esi, 1
and ecx, 1
add eax, eax
or eax, ecx
dec dword [esp + 0x50]
mov dword [esp + 0x1c], eax
jne 0x418241
cmp edi, 0xa
ja 0x418299
mov esi, dword [esp + 0x2c]
mov cl, byte [esp + 0x2c]
mov eax, 1
shl esi, 9
or esi, dword [esp + 0x24]
shl eax, cl
cmp dword [esp + 0x1c], 0x3ff
ja 0x418348
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
add dword [esp + 0x1c], eax
mov word [ecx + edi*2 + 0x160], si
jmp 0x418275
mov ecx, dword [esp + 0x1c]
and ecx, 0x3ff
add ecx, dword [esp + 0x40]
add ecx, ecx
add ecx, dword [esp + 0xf8]
movsx esi, word [ecx + 0x160]
test esi, esi
jne 0x4182d3
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x20]
mov word [ecx + 0x160], ax
mov eax, esi
sub eax, 2
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
shr eax, 9
shr eax, 1
cmp edi, 0xb
je 0x418329
mov ecx, eax
and ecx, 1
sub esi, ecx
mov ecx, dword [esp + 0x40]
not esi
add ecx, esi
add ecx, ecx
add ecx, dword [esp + 0xf8]
cmp word [ecx + 0x960], 0
movsx esi, word [ecx + 0x960]
jne 0x418322
mov esi, dword [esp + 0x20]
mov word [ecx + 0x960], si
mov esi, dword [esp + 0x20]
mov ecx, esi
sub ecx, 2
mov dword [esp + 0x20], ecx
mov ecx, edi
dec ecx
mov edi, ecx
jmp 0x4182da
and eax, 1
mov edi, dword [esp + 0xf8]
sub eax, esi
mov esi, dword [esp + 0x40]
lea eax, [eax + esi + 0x4af]
mov esi, dword [esp + 0x24]
mov word [edi + eax*2], si
inc dword [esp + 0x24]
jmp 0x4181fb
cmp dword [esp + 0x48], 2
jne 0x4180fc
xor edx, edx
jmp 0x417f0c
mov eax, dword [esp]
mov byte [eax], dl
inc eax
mov dword [esp], eax
mov eax, dword [esp + 8]
sub eax, ebp
cmp eax, 3
jle 0x41838a
mov eax, dword [esp + 0x18]
sub eax, dword [esp]
dec eax
jg 0x41854b
jmp 0x41847e
cmp ebx, 0xe
ja 0x4184a6
dec eax
jg 0x418483
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0x160]
test eax, eax
js 0x4183c5
sar eax, 9
je 0x418400
cmp ebx, eax
jae 0x4184a6
jmp 0x418400
cmp ebx, 0xa
jbe 0x418400
mov ecx, 0xa
mov esi, dword [esp + 4]
not eax
lea edi, [ecx + 1]
shr esi, cl
and esi, 1
lea eax, [esi + eax + 0x4b0]
mov esi, dword [esp + 0xf8]
movsx eax, word [esi + eax*2]
test eax, eax
jns 0x4184a6
lea esi, [ecx + 2]
mov ecx, edi
cmp ebx, esi
jae 0x4183cf
cmp ebp, dword [esp + 8]
jb 0x41845b
jmp 0x418426
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x418442
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x418462
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x17
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x418464
movzx eax, byte [ebp]
inc ebp
jmp 0x418464
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
cmp eax, 0xe
mov ebx, eax
jbe 0x41839a
jmp 0x4184a6
cmp ebx, 0xe
ja 0x4184a6
movzx eax, byte [ebp + 1]
lea ecx, [ebx + 8]
add ebp, 2
shl eax, cl
mov cl, bl
mov edx, eax
movzx eax, byte [ebp - 2]
shl eax, cl
or eax, edx
or dword [esp + 4], eax
mov eax, ebx
add eax, 0x10
mov ebx, eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edx + eax*2 + 0x160]
test eax, eax
mov ecx, eax
js 0x4184d2
sar eax, 9
mov esi, eax
mov eax, ecx
and eax, 0x1ff
jmp 0x4184ff
mov ecx, 0xa
mov edi, dword [esp + 4]
lea esi, [ecx + 1]
not eax
mov edx, dword [esp + 0xf8]
shr edi, cl
mov ecx, edi
and ecx, 1
lea eax, [ecx + eax + 0x4b0]
mov ecx, esi
movsx eax, word [edx + eax*2]
test eax, eax
js 0x4184d7
mov edx, eax
mov eax, ebx
mov ecx, esi
sub eax, esi
shr dword [esp + 4], cl
cmp edx, 0xff
mov ebx, eax
jg 0x41867b
jmp 0x41852c
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov esi, dword [esp + 0x18]
cmp dword [esp], esi
jb 0x418363
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x18
jmp 0x418a1d
cmp ebx, 0xe
ja 0x418566
movzx eax, word [ebp]
mov cl, bl
add ebp, 2
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 0x10
mov ebx, eax
mov eax, dword [esp + 4]
mov edx, dword [esp + 0xf8]
and eax, 0x3ff
movsx esi, word [edx + eax*2 + 0x160]
test esi, esi
js 0x418589
mov eax, esi
sar eax, 9
jmp 0x4185b8
mov ecx, 0xa
mov edi, dword [esp + 4]
lea eax, [ecx + 1]
mov edx, esi
not edx
shr edi, cl
mov ecx, edi
mov edi, dword [esp + 0xf8]
and ecx, 1
lea edx, [ecx + edx + 0x4b0]
mov ecx, eax
movsx esi, word [edi + edx*2]
test esi, esi
js 0x41858e
mov edi, ebx
mov cl, al
shr dword [esp + 4], cl
sub edi, eax
test esi, 0x100
mov edx, esi
mov ebx, edi
jne 0x41867b
cmp edi, 0xe
ja 0x4185ed
movzx eax, word [ebp]
mov ecx, edi
add ebp, 2
shl eax, cl
or dword [esp + 4], eax
mov eax, edi
add eax, 0x10
mov ebx, eax
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0x160]
test eax, eax
js 0x418614
mov edi, eax
sar edi, 9
mov dword [esp + 0x1c], edi
jmp 0x418647
mov ecx, 0xa
lea edi, [ecx + 1]
not eax
mov dword [esp + 0x1c], edi
mov edi, dword [esp + 4]
shr edi, cl
mov ecx, edi
mov edi, dword [esp + 0xf8]
and ecx, 1
lea eax, [ecx + eax + 0x4b0]
mov ecx, dword [esp + 0x1c]
movsx eax, word [edi + eax*2]
test eax, eax
js 0x418619
mov cl, byte [esp + 0x1c]
shr dword [esp + 4], cl
mov edi, ebx
mov ecx, dword [esp + 0x1c]
sub edi, ecx
mov ecx, esi
test ah, 1
mov ebx, edi
mov edi, dword [esp]
mov byte [edi], cl
je 0x41866c
inc dword [esp]
mov edx, eax
jmp 0x41867b
mov esi, dword [esp]
add dword [esp], 2
mov byte [esi + 1], al
jmp 0x41836c
and edx, 0x1ff
cmp edx, 0x100
je 0x418af0
lea eax, [edx - 0x101]
mov edx, dword [eax*4 + 0x424c20]
mov dword [esp + 0xc], edx
cmp dword [esp + 0xc], 0
mov edx, dword [eax*4 + 0x424ba0]
je 0x418751
mov esi, dword [esp + 0xc]
cmp ebx, esi
jae 0x418731
cmp ebp, dword [esp + 8]
jb 0x418713
jmp 0x4186de
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x4186fa
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x41871a
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x19
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x41871c
movzx eax, byte [ebp]
inc ebp
jmp 0x41871c
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
cmp dword [esp + 0xc], eax
mov ebx, eax
ja 0x4186b8
mov cl, byte [esp + 0xc]
mov eax, 1
mov edi, dword [esp + 0xc]
mov esi, ebx
shl eax, cl
sub esi, edi
dec eax
and eax, dword [esp + 4]
shr dword [esp + 4], cl
mov ebx, esi
add edx, eax
cmp ebx, 0xe
ja 0x41886e
mov eax, dword [esp + 8]
sub eax, ebp
dec eax
jg 0x41884b
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0xf00]
test eax, eax
js 0x418792
sar eax, 9
je 0x4187cd
cmp ebx, eax
jae 0x41886e
jmp 0x4187cd
cmp ebx, 0xa
jbe 0x4187cd
mov ecx, 0xa
mov esi, dword [esp + 4]
not eax
lea edi, [ecx + 1]
shr esi, cl
and esi, 1
lea eax, [esi + eax + 0xb80]
mov esi, dword [esp + 0xf8]
movsx eax, word [esi + eax*2]
test eax, eax
jns 0x41886e
lea esi, [ecx + 2]
mov ecx, edi
cmp ebx, esi
jae 0x41879c
cmp ebp, dword [esp + 8]
jb 0x418828
jmp 0x4187f3
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x41880f
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x41882f
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x1a
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x418831
movzx eax, byte [ebp]
inc ebp
jmp 0x418831
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
cmp eax, 0xe
mov ebx, eax
jbe 0x418767
jmp 0x41886e
movzx eax, byte [ebp + 1]
lea ecx, [ebx + 8]
add ebp, 2
shl eax, cl
mov cl, bl
mov esi, eax
movzx eax, byte [ebp - 2]
shl eax, cl
or eax, esi
or dword [esp + 4], eax
mov eax, ebx
add eax, 0x10
mov ebx, eax
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xf8]
and eax, 0x3ff
movsx eax, word [edi + eax*2 + 0xf00]
test eax, eax
mov ecx, eax
js 0x41889a
sar eax, 9
mov esi, eax
mov eax, ecx
and eax, 0x1ff
jmp 0x4188c7
mov ecx, 0xa
mov edi, dword [esp + 4]
lea esi, [ecx + 1]
not eax
shr edi, cl
mov ecx, edi
mov edi, dword [esp + 0xf8]
and ecx, 1
lea eax, [ecx + eax + 0xb80]
mov ecx, esi
movsx eax, word [edi + eax*2]
test eax, eax
js 0x41889f
mov edi, ebx
mov ecx, esi
shr dword [esp + 4], cl
sub edi, esi
mov ebx, edi
mov edi, dword [eax*4 + 0x424b20]
mov eax, dword [eax*4 + 0x424aa0]
test edi, edi
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], eax
je 0x418990
cmp ebx, edi
jae 0x41896e
cmp ebp, dword [esp + 8]
jb 0x418950
jmp 0x41891b
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x418937
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x418957
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x1b
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], edi
movzx eax, byte [eax]
jmp 0x418959
movzx eax, byte [ebp]
inc ebp
jmp 0x418959
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
cmp dword [esp + 0xc], eax
mov ebx, eax
ja 0x4188f5
mov cl, byte [esp + 0xc]
mov eax, 1
mov edi, dword [esp + 0xc]
mov esi, ebx
shl eax, cl
sub esi, edi
dec eax
and eax, dword [esp + 4]
shr dword [esp + 4], cl
add dword [esp + 0x10], eax
mov ebx, esi
mov eax, dword [esp]
sub eax, dword [esp + 0x104]
cmp dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
jbe 0x4189d0
cmp dword [esp + 0x44], 0
jne 0x4189be
jmp 0x4189d0
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x25
jmp 0x418cea
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x10]
and eax, dword [esp + 0x28]
mov ecx, dword [esp]
add eax, dword [esp + 0x104]
cmp eax, ecx
jbe 0x4189ec
mov ecx, eax
add ecx, edx
cmp dword [esp + 0x18], ecx
jb 0x418a51
jmp 0x418a5f
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov esi, dword [esp + 0x18]
cmp dword [esp], esi
jb 0x418a27
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x35
mov ecx, 2
jmp 0x418ced
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x10]
and eax, dword [esp + 0x28]
mov edi, dword [esp + 0x104]
mov esi, dword [esp]
mov al, byte [edi + eax]
mov byte [esi], al
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
mov eax, esi
inc eax
mov dword [esp], eax
lea eax, [edx - 1]
test edx, edx
mov edx, eax
jne 0x418a07
jmp 0x41836c
cmp edx, 8
jbe 0x418aaa
cmp dword [esp + 0x10], edx
jb 0x418aaa
mov ecx, edx
and ecx, 0xfffffff8
add ecx, eax
mov esi, dword [eax]
mov edi, dword [esp]
add eax, 8
add dword [esp], 8
mov dword [edi], esi
mov esi, dword [eax - 4]
cmp ecx, eax
mov dword [edi + 4], esi
ja 0x418a71
and edx, 7
cmp edx, 2
ja 0x418aaa
test edx, edx
je 0x41836c
mov cl, byte [eax]
mov esi, dword [esp]
cmp edx, 2
mov byte [esi], cl
jne 0x418ae8
mov al, byte [eax + 1]
jmp 0x418ae5
mov cl, byte [eax]
mov esi, dword [esp]
sub edx, 3
add dword [esp], 3
add eax, 3
mov byte [esi], cl
mov cl, byte [eax - 2]
mov byte [esi + 1], cl
mov cl, byte [eax - 1]
cmp edx, 2
mov byte [esi + 2], cl
jg 0x418aaa
test edx, edx
jle 0x41836c
mov cl, byte [eax]
mov edi, dword [esp]
cmp edx, 2
mov byte [edi], cl
jne 0x418ae8
mov al, byte [eax + 1]
mov esi, edi
mov byte [esi + 1], al
add dword [esp], edx
jmp 0x41836c
mov eax, dword [esp + 0xf8]
test byte [eax + 0x14], 1
je 0x4176fc
test byte [esp + 0x110], 1
je 0x418cc8
mov eax, ebx
and eax, 7
cmp ebx, eax
jae 0x418b8d
cmp ebp, dword [esp + 8]
jb 0x418b73
jmp 0x418b3e
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x418b5a
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x418b7a
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x20
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x418b7c
movzx eax, byte [ebp]
inc ebp
jmp 0x418b7c
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
jmp 0x418b11
mov ecx, ebx
mov eax, ebx
xor edx, edx
and ecx, 7
shr dword [esp + 4], cl
and eax, 0xfffffff8
mov ebx, eax
test ebx, ebx
mov eax, ebx
je 0x418c36
cmp eax, 7
ja 0x418c23
cmp ebp, dword [esp + 8]
jb 0x418c09
jmp 0x418bd4
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x418bf0
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x418c10
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x29
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov esi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], esi
movzx eax, byte [eax]
jmp 0x418c12
movzx eax, byte [ebp]
inc ebp
jmp 0x418c12
xor eax, eax
mov cl, bl
shl eax, cl
or dword [esp + 4], eax
mov eax, ebx
add eax, 8
mov ebx, eax
jmp 0x418ba9
mov edi, ebx
movzx eax, byte [esp + 4]
shr dword [esp + 4], 8
sub edi, 8
mov ebx, edi
jmp 0x418c9a
cmp dword [esp + 8], ebp
ja 0x418c91
jmp 0x418c5c
mov eax, dword [esp + 8]
cmp dword [esp + 0xfc], eax
jb 0x418c78
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
test byte [esp + 0x110], 2
je 0x418c98
mov eax, dword [esp + 0xf8]
mov dword [eax], 0x2a
jmp 0x417619
mov eax, dword [esp + 0xfc]
mov edi, dword [esp + 0x108]
lea ebp, [eax + 1]
mov dword [esp], edi
movzx eax, byte [eax]
jmp 0x418c9a
movzx eax, byte [ebp]
inc ebp
jmp 0x418c9a
xor eax, eax
mov edi, dword [esp + 0xf8]
inc edx
mov ecx, dword [edi + 0x10]
shl ecx, 8
or eax, ecx
cmp edx, 3
mov dword [edi + 0x10], eax
ja 0x418cc8
jmp 0x418b9f
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
mov eax, dword [esp + 0xf8]
xor ecx, ecx
mov dword [eax], 0x22
jmp 0x418ced
mov eax, dword [esp + 0x108]
mov ebp, dword [esp + 0xfc]
mov dword [esp], eax
or ecx, 0xffffffff
mov edi, dword [esp + 0xf8]
mov eax, dword [esp + 4]
mov dword [edi + 0x38], eax
mov eax, dword [esp + 0x10]
mov dword [edi + 0x24], edx
mov edx, dword [esp + 0x100]
mov dword [edi + 4], ebx
mov ebx, edi
mov dword [edi + 0x20], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x14]
mov dword [edi + 0x3c], eax
mov eax, ebp
sub eax, dword [esp + 0xfc]
mov edi, dword [esp]
sub edi, dword [esp + 0x108]
test byte [esp + 0x110], 9
mov dword [edx], eax
mov eax, dword [esp + 0x10c]
mov ebp, edi
mov dword [eax], edi
mov eax, ecx
je 0x418e67
cmp ecx, 0xffffffff
je 0x418e67
mov eax, edi
xor edx, edx
mov edi, 0x15b0
div edi
mov esi, dword [ebx + 0x1c]
movzx ebx, si
shr esi, 0x10
mov edi, edx
test ebp, ebp
je 0x418e32
mov eax, dword [esp + 0x108]
add eax, 7
mov edx, eax
sub edx, dword [esp + 0x108]
cmp edi, edx
jbe 0x418dd2
movzx edx, byte [eax - 7]
add eax, 8
add ebx, edx
movzx edx, byte [eax - 0xe]
add edx, ebx
add ebx, edx
add esi, ebx
movzx ebx, byte [eax - 0xd]
add edx, ebx
movzx ebx, byte [eax - 0xc]
add esi, edx
add edx, ebx
movzx ebx, byte [eax - 0xb]
add esi, edx
add edx, ebx
movzx ebx, byte [eax - 0xa]
add esi, edx
add edx, ebx
movzx ebx, byte [eax - 9]
add esi, edx
add edx, ebx
movzx ebx, byte [eax - 8]
add esi, edx
add ebx, edx
add esi, ebx
jmp 0x418d80
mov eax, edi
and eax, 0x1ff8
add dword [esp + 0x108], eax
sub eax, dword [esp + 0x108]
mov edx, dword [esp + 0x108]
add edx, eax
cmp edi, edx
jbe 0x418e0c
inc dword [esp + 0x108]
mov edx, dword [esp + 0x108]
movzx edx, byte [edx - 1]
add ebx, edx
add esi, ebx
jmp 0x418de7
mov eax, ebx
xor edx, edx
mov ebx, 0xfff1
div ebx
mov eax, esi
mov esi, 0xfff1
sub ebp, edi
mov edi, 0x15b0
mov ebx, edx
xor edx, edx
div esi
mov esi, edx
jmp 0x418d6e
mov eax, dword [esp + 0xf8]
shl esi, 0x10
add ebx, esi
test ecx, ecx
mov dword [eax + 0x1c], ebx
mov eax, ecx
jne 0x418e67
test byte [esp + 0x110], 1
mov eax, ebp
je 0x418e67
mov eax, dword [esp + 0xf8]
cmp ebx, dword [eax + 0x10]
sete al
movzx eax, al
lea eax, [eax + eax - 2]
add esp, 0xe4
pop ebx
pop esi
pop edi
pop ebp
ret