Function at 0x45d170
Capabilities:
Parse credit card information

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x6e0
mov eax, dword [ebx + 0x14]
push esi
push edi
mov edi, dword [ecx + 8]
mov eax, dword [eax]
mov dword [ebp - 0x4c], eax
mov eax, dword [ebx + 8]
mov dword [ebp - 0x50], ecx
lea esi, [eax*8]
sub esi, eax
mov eax, dword [edi + esi*4 + 0x18]
shl eax, 2
call fcn.004b5570
mov eax, 0x4ceea8
mov dword [ebp - 0x28], esp
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x60], 0x4da2d4
cmp byte [eax], 1
jne 0x45d1e0
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x6c], eax
jmp 0x45d1e7
mov dword [ebp - 0x6c], 0
mov eax, dword [edi + esi*4 + 0x14]
shl eax, 2
call fcn.004b5570
xor eax, eax
mov dword [ebp - 0x18], esp
mov dword [ebp - 4], eax
mov dword [ebp - 0x58], eax
mov eax, dword [edi + esi*4 + 0x10]
mov dword [ebp - 0x14], eax
cmp dword [eax + 8], 0x49
je 0x45edad
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x48], eax
mov eax, 0x10
call fcn.004b57a0
mov edx, dword [ebp - 0x14]
mov edi, esp
mov dword [ebp - 0xc], edi
mov esi, dword [edx]
mov eax, dword [edx + 4]
mov dword [edi], esi
mov dword [edi + 4], eax
mov ecx, dword [edx + 8]
mov dword [edi + 8], ecx
cmp ecx, 8
jge 0x45d5f9
cmp ecx, 6
jne 0x45d347
mov eax, dword [ebp - 4]
test eax, eax
je case.default.0x45dee0
mov ecx, dword [ebp - 0x18]
dec eax
mov dword [ebp - 4], eax
mov esi, dword [ecx + eax*4]
mov eax, dword [esi + 8]
cmp eax, 5
jne 0x45d26a
mov eax, esi
jmp 0x45d285
cmp eax, 4
jne 0x45d2d2
mov eax, dword [esi]
cmp byte [eax + 0x17], 0
jne 0x45d27f
mov ecx, dword [eax + 0xc]
call fcn.004051b0
test byte [eax + 0x15], 0x40
je 0x45d2d2
mov ecx, dword [eax]
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x45d2d2
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp eax, dword [0x4e9de4]
jne 0x45ed5d
mov esi, dword [ebp - 0xc]
add esi, 8
push dword [edi + 4]
mov ecx, dword [ebp - 0x50]
lea eax, [edi + 4]
push esi
mov dword [ebp - 0xc], eax
call fcn.0040d820
test eax, eax
je 0x45f2fb
mov eax, dword [ebp - 0xc]
mov dword [edi], esi
mov dword [edi + 8], 4
jmp 0x45d359
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
lea edx, [ebp - 0x6e0]
call fcn.00453be0
mov ecx, dword [ebp - 0x40]
add esp, 4
mov edx, eax
mov dword [ebp - 0xc], edx
test ecx, ecx
je 0x45ede3
cmp dword [edi + 4], 3
mov eax, 0x103
push 0
push 0
push 0
mov esi, 3
cmovge eax, esi
push eax
push ecx
push edx
mov ecx, 0x4e9f30
call fcn.00443d20
mov esi, eax
test esi, esi
jne 0x45d2a7
mov eax, dword [edi + 4]
cmp eax, 1
jne 0x45d332
add dword [ebp - 0x14], 0x10
push esi
jmp 0x45dc4a
cmp eax, 2
jne 0x45ed74
mov dword [edi + 8], 3
jmp 0x45dc51
mov edx, dword [ebp - 4]
lea eax, [edi + 4]
mov dword [ebp - 4], edx
cmp ecx, 4
jne 0x45dc51
mov eax, dword [eax]
mov dword [ebp - 0x34], eax
cmp eax, 3
jge 0x45dc51
mov dl, byte [esi + 0x17]
test dl, dl
jne 0x45d37d
mov ecx, dword [esi + 0xc]
call fcn.004051b0
mov ecx, eax
mov eax, dword [ebp - 0x34]
jmp 0x45d37f
mov ecx, esi
cmp byte [ecx + 0x17], 3
jne 0x45d511
test eax, eax
je 0x45d396
cmp eax, 2
jne 0x45d511
mov dword [ebp - 0xc0], 0x4ceea8
lea eax, [ebp - 0x4e0]
mov dword [ebp - 0xbc], 0xffffffff
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xac], 0
mov dword [ebp - 0xa4], 1
mov dword [ebp - 0xb8], 1
test dl, dl
jne 0x45d3e9
mov ecx, dword [esi + 0xc]
lea eax, [ebp - 0xc0]
push eax
call fcn.004853a0
jmp 0x45d3fc
mov eax, dword [esi]
lea ecx, [ebp - 0xc0]
push dword [esi + 0x18]
push ecx
mov eax, dword [eax]
call eax
add esp, 8
mov ecx, dword [ebp - 0xa4]
test ecx, ecx
je 0x45ee0c
cmp ecx, 8
je 0x45ee0c
mov ecx, dword [ebp - 0xb8]
mov esi, dword [ebp - 0xbc]
test ecx, ecx
jne 0x45d4f8
test esi, esi
je 0x45d4f8
cmp esi, 0xffffffff
jne 0x45d44f
mov esi, dword [ebp - 0xc0]
lea ecx, [esi + 2]
nop dword [eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x45d440
sub esi, ecx
sar esi, 1
mov eax, dword [ebp - 0xc0]
lea ecx, [ebp - 0x4e0]
cmp eax, ecx
je 0x45d48c
cmp dword [ebp - 0xac], 0
je 0x45d475
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
mov dword [edx + ecx*4], edi
inc ecx
mov dword [ebp - 0x20], ecx
mov dword [edi], eax
mov eax, dword [ebp - 4]
mov dword [edi + 8], 0
mov dword [edi + 4], esi
mov dword [ebp - 4], eax
jmp 0x45dc54
mov eax, dword [ebx + 0x18]
lea edx, [esi + 1]
mov ecx, dword [ebp - 0x4c]
sub ecx, dword [eax]
mov eax, dword [ebx + 0x1c]
sar ecx, 1
mov eax, dword [eax]
sub eax, ecx
cmp edx, eax
ja 0x45d4b4
mov eax, dword [ebp - 0x4c]
mov ecx, eax
mov dword [ebp - 0x34], ecx
lea eax, [eax + edx*2]
mov dword [ebp - 0x4c], eax
jmp 0x45d4c7
lea eax, [edx + edx]
call fcn.004b5570
lea eax, [esi + 1]
mov dword [ebp - 0x34], esp
add dword [ebp - 0x58], eax
mov ecx, esp
lea eax, [esi*2 + 2]
push eax
push dword [ebp - 0xc0]
push ecx
call fcn.0049cad0
mov eax, dword [ebp - 0x34]
add esp, 0xc
mov dword [edi], eax
mov eax, dword [ebp - 4]
mov dword [edi + 8], 0
mov dword [edi + 4], esi
mov dword [ebp - 4], eax
jmp 0x45dc54
mov eax, dword [ebp - 0xc0]
mov dword [edi], eax
mov eax, dword [ebp - 4]
mov dword [edi + 4], esi
mov dword [edi + 8], ecx
mov dword [ebp - 4], eax
jmp 0x45dc54
test dl, dl
jne 0x45d51f
mov ecx, dword [esi + 0xc]
call fcn.004051b0
jmp 0x45d521
mov eax, esi
test byte [eax + 0x15], 2
je 0x45dc51
test dl, dl
jne 0x45d539
mov ecx, dword [esi + 0xc]
call fcn.004051b0
jmp 0x45d53b
mov eax, esi
cmp byte [eax + 0x17], 2
jne 0x45d5c5
test dl, dl
jne 0x45d553
mov ecx, dword [esi + 0xc]
call fcn.004051b0
mov esi, eax
and byte [esi + 0x15], 0xfd
lea eax, [ebp - 0x2c0]
mov dword [ebp - 0x2d8], 0
mov dword [ebp - 0x2e0], 0x4ceea8
mov dword [ebp - 0x2dc], 0xffffffff
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x2cc], 0
mov dword [ebp - 0x2c4], 1
mov esi, dword [esi]
push esi
mov eax, dword [esi]
call dword [eax + 4]
push 0
push 0
lea eax, [ebp - 0x2e0]
mov ecx, esi
push eax
call fcn.004778e0
mov ecx, eax
cmp ecx, 1
jne 0x45ee0c
mov eax, dword [esi]
push esi
call dword [eax + 8]
jmp 0x45dc51
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x45ee1b
mov edx, dword [ebp - 0x14]
cmp eax, 2
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
jne 0x45dc5a
mov dword [edi + 8], 3
mov dword [ecx + eax*4], edi
mov edi, eax
inc edi
mov eax, ecx
mov dword [ebp - 4], edi
jmp 0x45ed1b
cmp ecx, 0x46
jne 0x45db65
mov eax, dword [esi]
mov ecx, dword [esi + 0xc]
mov edx, dword [ebp - 4]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x44], eax
mov eax, dword [esi + 8]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x2c], ecx
cmp ecx, edx
jg case.default.0x45dee0
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x34], edx
sub edx, ecx
mov dword [ebp - 4], edx
lea ecx, [esi + edx*4]
mov dword [ebp - 0x24], ecx
test eax, 0x20000
je 0x45d6ab
test edx, edx
je case.default.0x45dee0
mov ecx, dword [esi + edx*4 - 4]
dec edx
and eax, 0xfffdffff
mov dword [ebp - 4], edx
mov dword [ebp - 0x1c], eax
cmp dword [ecx + 8], 3
je 0x45d6ab
push 0
lea edx, [ebp - 0x6e0]
call fcn.00453be0
mov edx, dword [ebp - 4]
mov ecx, eax
add esp, 4
mov dword [ebp - 0x44], ecx
cmp word [ecx], 0
jne 0x45d6ab
mov esi, dword [esi + edx*4]
mov ecx, dword [esi + 8]
cmp ecx, 5
jne 0x45d687
mov eax, esi
jmp 0x45d6a2
cmp ecx, 4
jne 0x45d6ab
mov eax, dword [esi]
cmp byte [eax + 0x17], 0
jne 0x45d69c
mov ecx, dword [eax + 0xc]
call fcn.004051b0
test byte [eax + 0x15], 0x40
je 0x45d6ab
cmp dword [eax], 0
jne 0x45ee2b
mov esi, dword [ebp - 0xc]
test esi, esi
je 0x45d6cf
mov eax, 0x10
call fcn.004b57a0
mov edx, esp
mov dword [ebp - 0x3c], esp
mov dword [edx + 8], 5
mov dword [edx], esi
jmp 0x45d797
test edx, edx
je case.default.0x45dee0
mov eax, dword [ebp - 0x18]
dec edx
mov dword [ebp - 4], edx
mov edx, dword [eax + edx*4]
mov dword [ebp - 0x3c], edx
mov ecx, dword [edx + 8]
cmp ecx, 5
jne 0x45d6f0
mov eax, edx
jmp 0x45d70e
cmp ecx, 4
jne 0x45d718
mov eax, dword [edx]
cmp byte [eax + 0x17], 0
jne 0x45d708
mov ecx, dword [eax + 0xc]
call fcn.004051b0
mov ecx, dword [edx + 8]
test byte [eax + 0x15], 0x40
je 0x45d758
mov esi, dword [eax]
test esi, esi
jne 0x45d797
cmp ecx, 7
jne 0x45d758
mov eax, dword [0x4e47f8]
mov eax, dword [eax + 0x18]
mov ecx, dword [eax + 0x30]
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
mov ecx, dword [0x4e47f8]
mov esi, eax
mov edx, dword [ebp - 0x3c]
or dword [ebp - 0x1c], 0x40
mov ecx, dword [ecx + 0x18]
mov ecx, dword [ecx + 0x2c]
mov ecx, dword [ecx]
mov dword [edx + 8], 4
mov dword [edx], ecx
mov dword [edx + 4], 0
jmp 0x45d78f
mov ecx, edx
call fcn.00454620
sub eax, 0
je 0x45d782
sub eax, 1
je 0x45d77a
sub eax, 1
je 0x45d772
xor esi, esi
jmp 0x45d788
mov esi, dword [0x4e9e50]
jmp 0x45d788
mov esi, dword [0x4e9e4c]
jmp 0x45d788
mov esi, dword [0x4e9e48]
or dword [ebp - 0x1c], 0x20
mov edx, dword [ebp - 0x3c]
test esi, esi
je case.default.0x45dee0
mov ecx, dword [ebp - 0x1c]
test ecx, 0x40000
mov eax, dword [ebp - 4]
cmovne eax, dword [ebp - 0x34]
mov dword [ebp - 4], eax
lea eax, [ebp - 0x4e0]
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x98], 0x4ceea8
mov dword [ebp - 0x94], 0xffffffff
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x7c], 1
mov eax, dword [edx + 8]
mov dword [ebp - 0xc], eax
cmp eax, 4
jne 0x45d7fc
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x1c]
push dword [ebp - 0x2c]
push dword [ebp - 0x24]
push edx
push dword [ebp - 0x44]
push ecx
test ecx, 0x10000
je 0x45d821
lea edx, [ebp - 0x98]
mov ecx, esi
call fcn.0045f6b0
add esp, 0x14
jmp 0x45d831
mov eax, dword [esi]
lea ecx, [ebp - 0x98]
push ecx
mov ecx, esi
mov eax, dword [eax + 0x1c]
call eax
cmp dword [ebp - 0xc], 4
mov dword [ebp - 0x34], eax
jne 0x45d840
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x45ee0c
cmp ecx, 4
je 0x45ee77
cmp ecx, 8
je 0x45ee0c
mov eax, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x50]
mov dword [0x4ea574], esi
test al, 1
je 0x45d8b4
cmp dword [ebp - 0x90], 5
jne 0x45d882
mov eax, dword [ebp - 0x98]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x45d895
push eax
call fcn.0049ef92
add esp, 4
mov eax, dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x24]
mov edx, dword [ecx + eax*4 - 4]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [edi], eax
mov dword [edi + 4], ecx
mov eax, dword [edx + 8]
mov dword [edi + 8], eax
jmp 0x45dc51
mov edx, dword [ebp - 0x90]
test edx, edx
je 0x45d8ef
mov eax, dword [ebp - 0x98]
cmp edx, 5
mov ecx, dword [ebp - 0x94]
mov dword [edi + 8], edx
mov edx, dword [ebp - 0x14]
mov dword [edi], eax
mov dword [edi + 4], ecx
jne 0x45d8e7
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov dword [eax + ecx*4], edi
inc ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 4]
jmp 0x45dc57
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
test ecx, ecx
jne 0x45d914
cmp dword [edx + 0x18], 0x49
jne 0x45d914
cmp byte [esi], 2
mov dword [ebp - 0x1c], 1
je 0x45ee42
mov ecx, dword [ebp - 0x6c]
jmp 0x45d959
xor eax, eax
cmp dword [edx + 0x18], 0x13
mov dword [ebp - 0x1c], eax
jne 0x45d954
test ecx, ecx
je 0x45d954
mov edx, dword [ebp - 0x18]
mov ecx, dword [edx + ecx*4 - 4]
cmp dword [ecx + 8], 4
jne 0x45d954
mov ecx, dword [ecx]
mov dword [ebp - 0x3c], ecx
cmp byte [ecx + 0x17], al
jne 0x45d94c
mov ecx, dword [ecx + 0xc]
call fcn.004051b0
mov ecx, dword [ebp - 0x3c]
mov edx, eax
mov eax, dword [ebp - 0x1c]
jmp 0x45d94e
mov edx, ecx
cmp byte [edx + 0x17], 1
je 0x45d95c
xor ecx, ecx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x3c], ecx
mov esi, dword [ebp - 0x94]
mov edx, dword [ebp - 0x98]
mov dword [ebp - 0x64], edx
cmp esi, 0xffffffff
jne 0x45d990
mov esi, edx
lea eax, [esi + 2]
mov dword [ebp - 0xc], eax
nop dword [eax + eax]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x45d980
sub esi, dword [ebp - 0xc]
sar esi, 1
test ecx, ecx
je 0x45da19
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x45d9b0
push dword [ebp - 0x94]
push eax
call fcn.004855d0
jmp 0x45d9eb
cmp edx, dword [0x4e9d04]
jne 0x45d9da
cmp esi, 0x40
jb 0x45d9da
push esi
push edx
call fcn.004855d0
mov dword [0x4e9d04], 0
mov dword [0x4e9d00], 0
jmp 0x45d9eb
push 0
push esi
push edx
call fcn.00484ec0
test eax, eax
je 0x45f2fb
cmp dword [ebp - 0x1c], 0
jne 0x45ef42
dec dword [ebp - 4]
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp - 0x14]
mov dword [edi], eax
add edx, 0x10
mov eax, dword [ebp - 4]
mov dword [edi + 8], 4
mov dword [edi + 4], 0
jmp 0x45dc57
cmp dword [ebp - 0x84], 0
mov dword [edi + 8], 0
mov dword [edi + 4], esi
je 0x45da51
cmp dword [ebp - 0x1c], 0
je 0x45da3d
mov eax, dword [ebx + 0x10]
test eax, eax
jne 0x45ee5e
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov dword [eax + ecx*4], edi
inc ecx
mov dword [ebp - 0x20], ecx
mov dword [edi], edx
jmp 0x45dc51
test esi, esi
jne 0x45da60
mov dword [edi], 0x4ceea8
jmp 0x45dc51
cmp edx, dword [0x4e9d04]
je 0x45dab7
mov eax, dword [ebp - 0x1c]
xor al, 1
je 0x45da4a
mov ecx, dword [ebp - 0x4c]
lea eax, [esi + 1]
mov dword [ebp - 0x34], eax
mov eax, dword [ebx + 0x18]
sub ecx, dword [eax]
mov eax, dword [ebx + 0x1c]
sar ecx, 1
mov eax, dword [eax]
sub eax, ecx
lea ecx, [esi + 1]
cmp ecx, eax
ja 0x45dae7
add esi, esi
push esi
push edx
push dword [ebp - 0x4c]
call fcn.0049cad0
mov ecx, dword [ebp - 0x4c]
add esp, 0xc
mov dword [edi], eax
mov eax, dword [ebp - 0x34]
lea ecx, [ecx + eax*2]
mov eax, dword [edi]
mov dword [ebp - 0x4c], ecx
xor ecx, ecx
mov word [esi + eax], cx
jmp 0x45dc51
cmp dword [ebp - 0x1c], 0
jne 0x45da4a
mov ecx, dword [ebp - 0x14]
add ecx, 0x18
mov eax, dword [ecx]
cmp eax, 0x49
je 0x45da4a
nop word [eax + eax]
cmp eax, 0x46
je 0x45da6f
mov eax, dword [ecx + 0x10]
add ecx, 0x10
cmp eax, 0x49
jne 0x45dad0
mov dword [edi], edx
jmp 0x45dc51
cmp ecx, 0x1001
jae 0x45db26
cmp dword [ebp - 0x58], 0x9c40
jae 0x45db26
lea eax, [ecx + ecx]
call fcn.004b5570
mov eax, esp
add esi, esi
push esi
push dword [ebp - 0x64]
push eax
call fcn.0049cad0
mov dword [edi], eax
add esp, 0xc
mov eax, dword [ebp - 0x34]
add dword [ebp - 0x58], eax
xor ecx, ecx
mov eax, dword [edi]
mov word [esi + eax], cx
jmp 0x45dc51
lea eax, [ecx + ecx]
push eax
call fcn.0049efad
add esp, 4
mov dword [edi], eax
test eax, eax
je 0x45f086
add esi, esi
push esi
push dword [ebp - 0x64]
push eax
call fcn.0049cad0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov ecx, dword [ebp - 0x28]
mov dword [ecx + eax*4], edi
inc eax
mov dword [ebp - 0x20], eax
xor ecx, ecx
mov eax, dword [edi]
mov word [esi + eax], cx
jmp 0x45dc51
cmp ecx, 0x20
jne 0x45db71
mov edx, esi
jmp case.0x45dbb5.18
mov esi, dword [ebp - 4]
test esi, esi
je case.default.0x45dee0
mov eax, dword [ebp - 0x18]
dec esi
mov dword [ebp - 4], esi
mov esi, dword [eax + esi*4]
mov dword [ebp - 0x2c], esi
cmp dword [esi + 8], 3
jne 0x45dba6
cmp ecx, 0x22
je 0x45ed18
cmp ecx, 0x13
jne case.default.0x45dee0
add ecx, 0xffffffee
jmp 0x45dbae
add ecx, 0xffffffee
cmp ecx, 0x2f
ja case.0x45dbb5.20
movzx eax, byte [ecx + 0x45f354]
jmp dword [eax*4 + 0x45f344]
xor eax, eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x70], eax
jmp 0x45dbd6
lea edx, [ebp - 0x78]
mov ecx, esi
call fcn.00453a40
mov dword [ebp - 0x70], eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x48], eax
mov edx, dword [edi + 8]
xor ecx, ecx
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x34], edx
lea ecx, [edx - 9]
cmp ecx, 0x3c
ja case.0x45dbf7.11
movzx eax, byte [ecx + 0x45f3a8]
jmp dword [eax*4 + 0x45f384]
mov ecx, esi
call fcn.00453950
mov edx, dword [edi + 8]
xor ecx, ecx
cmp edx, 0x23
sete cl
cmp eax, ecx
jne 0x45ed12
mov eax, dword [edi]
cmp edx, 0x21
mov dword [ebp - 0x14], eax
mov edx, eax
je case.0x45dbb5.18
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [edi], eax
mov dword [edi + 4], ecx
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, dword [ebp - 4]
jmp 0x45dc57
mov ecx, esi
call fcn.00453950
neg eax
sbb eax, eax
inc eax
push eax
mov ecx, edi
call fcn.00401560
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov dword [ecx + eax*4], edi
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0x18]
inc edi
mov dword [ebp - 4], edi
jmp 0x45ed1b
mov eax, dword [ebp - 0x48]
cmp eax, 1
jne 0x45dc8f
mov ecx, esi
call fcn.00453b50
neg eax
mov dword [edi], eax
mov eax, dword [ebp - 0x48]
adc edx, 0
neg edx
mov dword [edi + 8], eax
mov dword [edi + 4], edx
jmp 0x45dc51
cmp eax, 2
jne 0x45f29f
mov eax, dword [esi + 8]
cmp eax, 4
ja case.0x45dca0.3
jmp dword [eax*4 + 0x45f3e8]
movsd xmm0, qword [esi]
jmp 0x45dcd9
mov edx, dword [esi + 4]
mov ecx, dword [esi]
call fcn.004b5b40
jmp 0x45dcd9
mov ecx, dword [esi]
call fcn.0044e0a0
jmp 0x45dcd9
push dword [esi]
call fcn.004a9022
fstp qword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x10]
add esp, 4
jmp 0x45dcd9
xorps xmm0, xmm0
xorps xmm0, xmmword [0x4dcb50]
movsd qword [edi], xmm0
mov eax, dword [ebp - 0x48]
mov dword [edi + 8], eax
jmp 0x45dc51
cmp dword [ebp - 0x48], 0
je 0x45f29f
mov edx, edi
mov ecx, esi
call fcn.00453f70
jmp 0x45dc51
cmp dword [esi + 8], 4
jne case.default.0x45dee0
mov eax, dword [edi + 4]
test eax, eax
je 0x45dd72
cmp eax, 3
je 0x45dd34
mov eax, dword [esi]
mov dword [edi + 8], 4
mov dword [edi], eax
mov dword [edi + 4], 3
jmp 0x45dc51
mov edx, dword [esi]
cmp byte [edx + 0x17], 0
jne 0x45dd46
mov ecx, dword [edx + 0xc]
call fcn.004051b0
jmp 0x45dd48
mov eax, edx
mov al, byte [eax + 0x16]
and al, 0x22
cmp al, 2
jne 0x45dd5d
mov eax, dword [edi]
test eax, eax
je 0x45dd5d
cmp dword [eax + 0x24], 0
jne 0x45dd72
mov dword [edi + 8], 4
mov dword [edi], edx
mov dword [edi + 4], 3
jmp 0x45dc51
mov ecx, dword [esi]
call fcn.004847d0
mov dword [edi + 8], 5
mov dword [edi], eax
test eax, eax
je 0x45f086
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov dword [ecx + eax*4], edi
inc eax
mov dword [ebp - 0x20], eax
jmp 0x45dc51
cmp dword [esi + 8], 4
jne case.default.0x45dee0
mov ecx, dword [ebp - 0x48]
test ecx, ecx
je 0x45f29f
cmp edx, 9
je 0x45ddc0
cmp edx, 0x44
je 0x45ddc0
or eax, 0xffffffff
jmp 0x45ddc5
mov eax, 1
movd xmm0, eax
mov dword [ebp - 0x44], eax
cvtdq2pd xmm0, xmm0
movsd qword [ebp - 0x10], xmm0
cmp ecx, 1
jne 0x45de00
mov ecx, esi
call fcn.00453b50
mov ecx, eax
mov esi, edx
mov eax, dword [ebp - 0x44]
cdq
add eax, ecx
mov dword [edi + 4], esi
mov dword [edi], ecx
adc edx, esi
mov esi, dword [ebp - 0x2c]
push edx
push eax
mov ecx, dword [esi]
call fcn.0041dbb0
jmp 0x45de1a
mov ecx, dword [esi]
call fcn.0044e0a0
movsd qword [edi], xmm0
addsd xmm0, qword [ebp - 0x10]
mov ecx, dword [esi]
movaps xmm1, xmm0
call fcn.0041dbd0
cmp dword [ebp - 0x34], 0x44
movsd xmm0, qword [ebp - 0x10]
jl 0x45dce4
mov edx, dword [esi]
cmp byte [edx + 0x17], 0
jne 0x45de3b
mov ecx, dword [edx + 0xc]
call fcn.004051b0
jmp 0x45de3d
mov eax, edx
cmp byte [eax + 0x17], 1
jne 0x45de58
mov dword [edi + 8], 4
mov dword [edi], edx
mov dword [edi + 4], 0
jmp 0x45dc51
mov ecx, dword [ebp - 0x48]
cmp ecx, 1
jne 0x45de71
mov eax, dword [ebp - 0x44]
cdq
add dword [edi], eax
mov dword [edi + 8], ecx
adc dword [edi + 4], edx
jmp 0x45dc51
addsd xmm0, qword [edi]
mov dword [edi + 8], ecx
movsd qword [edi], xmm0
jmp 0x45dc51
cmp dword [ebp - 0x48], 1
jne 0x45f29f
mov ecx, esi
call fcn.00453b50
not eax
mov dword [edi + 8], 1
not edx
mov dword [edi], eax
mov dword [edi + 4], edx
jmp 0x45dc51
mov eax, dword [ebp - 4]
test eax, eax
je case.default.0x45dee0
mov ecx, dword [ebp - 0x18]
dec eax
mov dword [ebp - 4], eax
mov eax, dword [ecx + eax*4]
mov dword [ebp - 0x1c], eax
mov ecx, dword [eax + 8]
cmp ecx, 3
je case.default.0x45dee0
add edx, 0xffffffed
cmp edx, 0xc
ja 0x45dfae
cmp ecx, 4
jne case.default.0x45dee0
jmp dword [edx*4 + 0x45f3fc]
mov ecx, dword [eax]
push esi
call fcn.00484420
test eax, eax
je 0x45f2fb
mov ecx, dword [ebp - 0x1c]
mov edx, dword [ecx]
cmp byte [edx + 0x17], 0
jne 0x45df0c
mov ecx, dword [edx + 0xc]
call fcn.004051b0
jmp 0x45df0e
mov eax, edx
cmp byte [eax + 0x17], 1
je 0x45df29
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [edi], eax
mov dword [edi + 4], ecx
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
jmp 0x45dc51
mov eax, 4
mov dword [edi], edx
mov dword [edi + 4], 0
mov dword [edi + 8], eax
jmp 0x45dc51
mov dword [edi + 8], 0x38
jmp 0x45dfa9
mov dword [edi + 8], 0x39
jmp 0x45dfa9
mov dword [edi + 8], 0x3a
jmp 0x45dfa9
mov dword [edi + 8], 0x3b
jmp 0x45dfa9
mov ecx, dword [eax]
mov dword [ebp - 0x44], ecx
cmp dword [ebp - 0x48], 0
je 0x45e760
lea edx, [ebp - 0x5c]
mov ecx, eax
call fcn.00453a40
cmp dword [ebp - 0x5c], 0
je 0x45e760
mov edx, dword [edi + 8]
lea ecx, [edx - 0x26]
cmp ecx, 3
ja 0x45dfe5
cmp dword [ebp - 0x70], 0
jne 0x45dfe5
test eax, eax
je 0x45e760
cmp dword [ebp - 0x48], 1
jne 0x45e3b6
cmp dword [ebp - 0x5c], 1
jne 0x45e3b6
cmp edx, 0x3b
je 0x45e3b6
mov ecx, esi
call fcn.00453b50
mov ecx, dword [ebp - 0x1c]
mov esi, eax
mov dword [ebp - 0x24], edx
call fcn.00453b50
mov ecx, dword [edi + 8]
add ecx, 0xffffffda
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0xa0], eax
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0x3c], 1
cmp ecx, 0x16
ja case.0x45e03e.46
jmp dword [ecx*4 + 0x45f430]
add eax, esi
adc edx, dword [ebp - 0x24]
jmp 0x45ecb4
sub eax, esi
sbb edx, dword [ebp - 0x24]
jmp 0x45ecb4
mov ecx, dword [ebp - 0x24]
push ecx
push esi
push edx
push eax
call fcn.004b54f0
jmp 0x45ecb4
cmp eax, esi
jne 0x45e082
cmp edx, dword [ebp - 0x24]
jne 0x45e082
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
cmp eax, esi
jne 0x45e94a
cmp edx, dword [ebp - 0x24]
jne 0x45e94a
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
cmp edx, dword [ebp - 0x24]
jl 0x45e0d9
jg 0x45e0ca
cmp eax, esi
jbe 0x45e0d9
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
cmp edx, dword [ebp - 0x24]
jg 0x45e109
jl 0x45e0fa
cmp eax, esi
jae 0x45e109
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
cmp edx, dword [ebp - 0x24]
jl 0x45e139
jg 0x45e12a
cmp eax, esi
jb 0x45e139
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
cmp edx, dword [ebp - 0x24]
jg 0x45e169
jl 0x45e15a
cmp eax, esi
ja 0x45e169
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
and eax, esi
and edx, dword [ebp - 0x24]
jmp 0x45ecb4
or eax, esi
or edx, dword [ebp - 0x24]
jmp 0x45ecb4
xor eax, esi
xor edx, dword [ebp - 0x24]
jmp 0x45ecb4
mov ecx, dword [ebp - 0x24]
test ecx, ecx
jl case.default.0x45dee0
jg case.default.0x45dee0
test esi, esi
jb case.default.0x45dee0
test ecx, ecx
jg case.default.0x45dee0
jl 0x45e1c9
cmp esi, 0x3f
ja case.default.0x45dee0
cmp dword [edi + 8], 0x36
jne 0x45e1f4
movq xmm1, qword [ebp - 0xa0]
movd xmm0, esi
psrlq xmm1, xmm0
movq qword [ebp - 0x10], xmm1
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi], eax
mov dword [edi + 4], edx
jmp case.0x45e03e.46
cmp dword [edi + 8], 0x34
jne 0x45e21f
movq xmm1, qword [ebp - 0xa0]
movd xmm0, esi
psllq xmm1, xmm0
movq qword [ebp - 0x10], xmm1
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi], eax
mov dword [edi + 4], edx
jmp case.0x45e03e.46
mov ecx, esi
call fcn.004b59a0
mov dword [edi], eax
mov dword [edi + 4], edx
jmp case.0x45e03e.46
mov ecx, dword [ebp - 0x24]
mov eax, esi
or eax, ecx
je 0x45ee94
push ecx
push esi
push edx
push dword [ebp - 0x1c]
call fcn.004b55a0
jmp 0x45ecb4
or eax, edx
mov ecx, dword [ebp - 0x24]
jne 0x45e270
test ecx, ecx
jl 0x45ee94
jg 0x45e266
test esi, esi
jb 0x45ee94
mov eax, esi
or eax, ecx
je case.default.0x45dee0
test ecx, ecx
jl 0x45e314
jg 0x45e282
test esi, esi
jb 0x45e314
mov eax, esi
or eax, ecx
mov eax, 1
jne 0x45e299
xor edx, edx
mov dword [edi], eax
mov dword [edi + 4], edx
jmp case.0x45e03e.46
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x34], 0
test ecx, ecx
jl 0x45e302
jg 0x45e2ae
cmp esi, 1
jbe 0x45e302
mov edi, dword [ebp - 0x2c]
mov eax, esi
mov dword [ebp - 0x24], ecx
and eax, 1
or eax, 0
je 0x45e2d3
push edi
push dword [ebp - 0x1c]
push dword [ebp - 0x34]
push dword [ebp - 0x64]
call fcn.004b54f0
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x1c]
push edi
push eax
push edi
push eax
call fcn.004b54f0
mov ecx, dword [ebp - 0x24]
mov edi, edx
shrd esi, ecx, 1
mov dword [ebp - 0x1c], eax
shr ecx, 1
jne 0x45e2b1
jb 0x45e2f6
cmp esi, 1
ja 0x45e2b1
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp - 0xc]
mov edx, dword [ebp - 0x2c]
push edx
push dword [ebp - 0x1c]
push dword [ebp - 0x34]
push eax
call fcn.004b54f0
jmp 0x45ecb4
mov dword [ebp - 0x3c], 2
test edx, edx
jg 0x45e386
mov eax, dword [ebp - 0x1c]
jl 0x45e328
test eax, eax
jae 0x45e386
neg eax
mov dword [ebp - 0x1c], eax
adc edx, 0
neg edx
mov dword [ebp - 0x2c], edx
mov edx, ecx
mov ecx, esi
call fcn.004b5b40
mov edx, dword [ebp - 0x2c]
sub esp, 8
mov ecx, dword [ebp - 0x1c]
movsd qword [esp], xmm0
call fcn.004b5b40
sub esp, 8
movsd qword [esp], xmm0
call fcn.004260e0
fstp qword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x10]
and esi, 1
or esi, 0
movsd qword [edi], xmm0
je case.0x45e03e.46
xorps xmm0, xmmword [0x4dcb50]
movsd qword [edi], xmm0
jmp case.0x45e03e.46
mov edx, ecx
mov ecx, esi
call fcn.004b5b40
mov edx, dword [ebp - 0x2c]
sub esp, 8
mov ecx, dword [ebp - 0x1c]
movsd qword [esp], xmm0
call fcn.004b5b40
sub esp, 8
movsd qword [esp], xmm0
call fcn.004260e0
fstp qword [edi]
jmp case.0x45e03e.46
mov eax, dword [esi + 8]
cmp eax, 4
ja case.0x45e3be.3
jmp dword [eax*4 + 0x45f48c]
movsd xmm0, qword [esi]
jmp 0x45e419
mov edx, dword [esi + 4]
mov ecx, dword [esi]
call fcn.004b5b40
jmp 0x45e419
mov ecx, dword [esi]
call fcn.0044e0a0
jmp 0x45e419
mov eax, dword [esi]
mov ecx, eax
mov dword [ebp - 0x34], eax
call fcn.00423b70
test al, al
je 0x45e401
mov ecx, dword [ebp - 0x34]
call fcn.00481f90
mov ecx, eax
call fcn.004b5b40
jmp 0x45e419
push dword [ebp - 0x34]
call fcn.004a9022
fstp qword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x10]
add esp, 4
jmp 0x45e419
xorps xmm0, xmm0
mov edx, dword [ebp - 0x1c]
movsd qword [ebp - 0x10], xmm0
mov eax, dword [edx + 8]
cmp eax, 4
ja case.0x45e429.3
jmp dword [eax*4 + 0x45f4a0]
movsd xmm1, qword [edx]
jmp 0x45e49c
mov ecx, dword [ebp - 0x1c]
mov edx, dword [edx + 4]
mov ecx, dword [ecx]
call fcn.004b5b40
mov edx, dword [ebp - 0x1c]
movaps xmm1, xmm0
jmp 0x45e49c
mov ecx, dword [edx]
call fcn.0044e0a0
mov edx, dword [ebp - 0x1c]
movaps xmm1, xmm0
jmp 0x45e49c
mov eax, dword [edx]
mov ecx, eax
mov dword [ebp - 0x34], eax
call fcn.00423b70
test al, al
je 0x45e481
mov ecx, dword [ebp - 0x34]
call fcn.00481f90
mov ecx, eax
call fcn.004b5b40
mov edx, dword [ebp - 0x1c]
movaps xmm1, xmm0
jmp 0x45e49c
push dword [ebp - 0x34]
call fcn.004a9022
mov edx, dword [ebp - 0x1c]
add esp, 4
fstp qword [ebp - 0x38]
movsd xmm1, qword [ebp - 0x38]
jmp 0x45e49c
xorps xmm1, xmm1
mov ecx, dword [edi + 8]
lea eax, [ecx - 0x26]
cmp eax, 7
ja 0x45e4b0
mov dword [ebp - 0x3c], 1
jmp 0x45e4c0
mov dword [ebp - 0x3c], 2
cmp eax, 0x16
ja case.0x45e4c7.8
movzx eax, byte [eax + 0x45f4e4]
jmp dword [eax*4 + 0x45f4b4]
addsd xmm1, qword [ebp - 0x10]
movsd qword [edi], xmm1
jmp case.0x45e03e.46
subsd xmm1, qword [ebp - 0x10]
movsd qword [edi], xmm1
jmp case.0x45e03e.46
mulsd xmm1, qword [ebp - 0x10]
movsd qword [edi], xmm1
jmp case.0x45e03e.46
movsd xmm0, qword [ebp - 0x10]
ucomisd xmm0, qword [0x4dc9a8]
lahf
test ah, 0x44
jnp 0x45ee94
divsd xmm1, xmm0
movsd qword [edi], xmm1
jmp case.0x45e03e.46
ucomisd xmm1, qword [ebp - 0x10]
lahf
test ah, 0x44
jp 0x45e536
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
ucomisd xmm1, qword [ebp - 0x10]
lahf
test ah, 0x44
jnp 0x45e566
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
comisd xmm1, xmmword [ebp - 0x10]
jbe 0x45e592
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
movsd xmm0, qword [ebp - 0x10]
comisd xmm0, xmm1
jbe 0x45e5c2
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
comisd xmm1, xmmword [ebp - 0x10]
jb 0x45e5ee
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
movsd xmm0, qword [ebp - 0x10]
comisd xmm0, xmm1
jb 0x45e61e
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
movsd xmm2, qword [ebp - 0x10]
xorps xmm3, xmm3
ucomisd xmm1, xmm3
lahf
test ah, 0x44
jp 0x45e650
comisd xmm3, xmm2
ja 0x45ee94
xor ecx, ecx
comisd xmm3, xmm1
seta cl
test ecx, ecx
je 0x45e68e
movsd xmm0, qword [0x4dc9e0]
sub esp, 0x10
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm2
call fcn.00426170
fstp qword [ebp - 0x38]
movsd xmm0, qword [ebp - 0x38]
ucomisd xmm0, xmm3
lahf
test ah, 0x44
jp case.default.0x45dee0
ucomisd xmm1, xmm3
lahf
test ah, 0x44
jp 0x45e6a6
ucomisd xmm2, xmm3
lahf
test ah, 0x44
jnp case.default.0x45dee0
sub esp, 0x10
movsd qword [esp + 8], xmm2
test ecx, ecx
je 0x45e71f
xorps xmm1, xmmword [0x4dcb50]
movsd qword [esp], xmm1
call fcn.004260e0
movsd xmm0, qword [0x4dc9f0]
sub esp, 0x10
fstp qword [edi]
movsd qword [esp + 8], xmm0
movsd xmm0, qword [ebp - 0x10]
movsd qword [esp], xmm0
call fcn.00426170
sub esp, 8
fstp qword [esp]
call fcn.004260d0
fstp qword [ebp - 0x10]
movsd xmm0, qword [ebp - 0x10]
ucomisd xmm0, qword [0x4dc9e0]
lahf
test ah, 0x44
jp case.0x45e03e.46
movsd xmm0, qword [edi]
xorps xmm0, xmmword [0x4dcb50]
movsd qword [edi], xmm0
jmp case.0x45e03e.46
movsd qword [esp], xmm1
call fcn.004260e0
fstp qword [edi]
jmp case.0x45e03e.46
cmp ecx, 0x37
jg case.0x45e03e.46
cmp ecx, 0x31
jl case.0x45e03e.46
cmp dword [ebp - 0x5c], 1
mov ecx, 0x4d4b34
cmove edx, esi
mov esi, edx
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
mov eax, dword [edi + 8]
add eax, 0xffffffda
cmp eax, 3
ja case.default.0x45e76f
jmp dword [eax*4 + 0x45f4fc]
mov eax, dword [esi + 8]
cmp eax, 5
jne 0x45e782
mov edx, dword [esi]
jmp 0x45e7a3
cmp eax, 4
jne 0x45e7a1
mov eax, dword [esi]
cmp byte [eax + 0x17], 0
jne 0x45e797
mov ecx, dword [eax + 0xc]
call fcn.004051b0
test byte [eax + 0x15], 0x40
je 0x45e7a1
mov edx, dword [eax]
jmp 0x45e7a3
xor edx, edx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 8]
cmp ecx, 5
jne 0x45e7b2
mov ecx, dword [eax]
jmp 0x45e7d3
cmp ecx, 4
jne 0x45e7d1
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x45e7c7
mov ecx, dword [eax + 0xc]
call fcn.004051b0
test byte [eax + 0x15], 0x40
je 0x45e7d1
mov ecx, dword [eax]
jmp 0x45e7d3
xor ecx, ecx
test edx, edx
jne 0x45e7db
test ecx, ecx
je case.default.0x45e76f
mov eax, dword [edi + 8]
cmp eax, 0x28
je 0x45e7fb
cmp eax, 0x29
je 0x45e7fb
xor eax, eax
mov esi, 1
cmp edx, ecx
setne al
xor eax, esi
jmp 0x45dc49
xor eax, eax
xor esi, esi
cmp edx, ecx
setne al
xor eax, esi
jmp 0x45dc49
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
lea edx, [ebp - 0x6e0]
call fcn.00453be0
mov ecx, dword [ebp - 0x1c]
lea edx, [ebp - 0x4e0]
add esp, 4
mov esi, eax
lea eax, [ebp - 0x54]
push eax
call fcn.00453be0
mov ecx, dword [edi + 8]
add esp, 4
add ecx, 0xffffffdb
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x3c], 1
cmp ecx, 0xa
ja case.0x45e84f.42
jmp dword [ecx*4 + 0x45f50c]
push esi
push eax
call fcn.0049ee91
add esp, 8
test eax, eax
jne 0x45e873
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
mov ecx, dword [ebp - 0x54]
cmp ecx, dword [ebp - 0x40]
jne 0x45e8c3
test ecx, ecx
je 0x45e8b4
sub eax, esi
mov dword [ebp - 0x24], eax
nop word [eax + eax]
mov ax, word [eax + esi]
cmp ax, word [esi]
jne 0x45e8c3
mov eax, dword [ebp - 0x24]
add esi, 2
sub ecx, 1
jne 0x45e8a0
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
push esi
push eax
call fcn.0049ee91
add esp, 8
test eax, eax
je 0x45e8f6
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
mov ecx, dword [ebp - 0x54]
cmp ecx, dword [ebp - 0x40]
jne 0x45e94a
test ecx, ecx
je 0x45e934
sub eax, esi
mov dword [ebp - 0x24], eax
nop dword [eax]
mov ax, word [eax + esi]
cmp ax, word [esi]
jne 0x45e94a
mov eax, dword [ebp - 0x24]
add esi, 2
sub ecx, 1
jne 0x45e920
xorps xmm0, xmm0
movlpd qword [ebp - 0x10], xmm0
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov dword [edi + 4], ecx
jmp 0x45ecb7
xor ecx, ecx
mov eax, 1
mov dword [edi + 4], ecx
jmp 0x45ecb7
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 8]
cmp ecx, 5
jne 0x45e968
mov ecx, eax
jmp 0x45e988
cmp ecx, 4
jne 0x45e991
mov ecx, dword [eax]
cmp byte [ecx + 0x17], 0
jne 0x45e982
mov ecx, dword [ecx + 0xc]
call fcn.004051b0
mov ecx, eax
mov eax, dword [ebp - 0x1c]
test byte [ecx + 0x15], 0x40
je 0x45e991
cmp dword [ecx], 0
jne 0x45eeb5
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax + 8]
cmp ecx, 5
je 0x45e9b7
cmp ecx, 4
jne 0x45e9c0
mov eax, dword [eax]
cmp byte [eax + 0x17], 0
jne 0x45e9b1
mov ecx, dword [eax + 0xc]
call fcn.004051b0
test byte [eax + 0x15], 0x40
je 0x45e9c0
cmp dword [eax], 0
jne 0x45eece
mov edx, dword [ebp - 0x44]
test edx, edx
je 0x45ea12
cmp byte [edx + 0x17], 0
jne 0x45e9d7
mov ecx, dword [edx + 0xc]
call fcn.004051b0
jmp 0x45e9d9
mov eax, edx
cmp byte [eax + 0x17], 1
jne 0x45ea0a
push dword [ebp - 0x40]
mov ecx, edx
push esi
call fcn.00485500
test eax, eax
je 0x45f2fb
mov ecx, dword [ebp - 0x44]
mov dword [edi + 8], 4
mov dword [edi], ecx
mov dword [edi + 4], 0
jmp 0x45dc51
test edx, edx
jne 0x45eb6d
mov ecx, dword [ebp - 0x6c]
mov eax, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
test ecx, ecx
je 0x45ea37
test eax, eax
jne 0x45ea37
cmp dword [edx + 0x18], 0x49
jne 0x45ea37
mov eax, ecx
mov dword [ebp - 0x34], 1
mov dword [ebp - 0x2c], eax
jmp 0x45ea8f
cmp dword [edx + 0x18], 0x13
jne 0x45eb6d
test eax, eax
je 0x45eb6d
mov ecx, dword [ebp - 0x18]
mov eax, dword [ecx + eax*4 - 4]
cmp dword [eax + 8], 4
jne 0x45eb6d
mov eax, dword [eax]
mov dword [ebp - 0x2c], eax
cmp byte [eax + 0x17], 0
jne 0x45ea74
mov ecx, dword [eax + 0xc]
call fcn.004051b0
mov ecx, eax
mov eax, dword [ebp - 0x2c]
jmp 0x45ea76
mov ecx, eax
cmp byte [ecx + 0x17], 1
jne 0x45eb6d
mov dword [ebp - 0x34], 0
test eax, eax
je 0x45eb6d
push 0
mov ecx, eax
call fcn.00406f6b
xor ecx, ecx
cmp eax, 0x4e9d6c
cmovne ecx, eax
cmp ecx, dword [ebp - 0x24]
jne 0x45eafd
push dword [ebp - 0x40]
mov ecx, dword [ebp - 0x2c]
push esi
call fcn.00485480
test eax, eax
je 0x45eb6d
cmp dword [ebp - 0x34], 0
jne 0x45ef42
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x18]
dec eax
mov edx, dword [ebp - 0x14]
mov dword [ebp - 4], eax
add edx, 0x10
mov eax, dword [ecx + eax*4]
mov eax, dword [eax]
mov dword [edi], eax
mov eax, dword [ebp - 4]
mov dword [edi + 8], 4
mov dword [edi + 4], 0
mov dword [ecx + eax*4], edi
mov edi, eax
inc edi
mov eax, ecx
mov dword [ebp - 4], edi
jmp 0x45ed1b
cmp ecx, esi
je 0x45eb6d
mov eax, dword [ebp - 0x54]
add eax, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x2c]
push 0
push eax
push 0
call fcn.00484ec0
test eax, eax
je 0x45f2fb
mov ecx, dword [ebp - 0x2c]
push 1
call fcn.00406f6b
mov edx, eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0xc], edx
test eax, eax
je 0x45eb45
lea ecx, [eax + eax]
push ecx
push dword [ebp - 0x24]
push edx
call fcn.0049cad0
mov edx, dword [ebp - 0xc]
add esp, 0xc
mov eax, dword [ebp - 0x40]
lea eax, [eax*2 + 2]
push eax
mov eax, dword [ebp - 0x54]
push esi
lea eax, [edx + eax*2]
push eax
call fcn.0049cad0
mov ecx, dword [ebp - 0x2c]
add esp, 0xc
call fcn.0041dc00
jmp 0x45eabb
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebp - 0x4c]
mov edi, dword [ebp - 0xc]
sub ecx, dword [eax]
mov eax, dword [ebx + 0x1c]
sar ecx, 1
mov eax, dword [eax]
sub eax, ecx
mov ecx, dword [ebp - 0x40]
inc ecx
add ecx, dword [ebp - 0x54]
cmp ecx, eax
ja 0x45eb99
mov eax, dword [ebp - 0x4c]
mov dword [edi], eax
lea eax, [eax + ecx*2]
mov dword [ebp - 0x4c], eax
jmp 0x45ebe5
cmp ecx, 0x1001
jae 0x45ebc2
cmp dword [ebp - 0x58], 0x9c40
jae 0x45ebc2
lea eax, [ecx + ecx]
call fcn.004b5570
mov eax, esp
mov dword [edi], eax
mov eax, dword [ebp - 0x40]
inc eax
add eax, dword [ebp - 0x54]
add dword [ebp - 0x58], eax
jmp 0x45ebe5
lea eax, [ecx + ecx]
push eax
call fcn.0049efad
add esp, 4
mov dword [edi], eax
test eax, eax
je 0x45f086
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x28]
mov dword [ecx + eax*4], edi
inc eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x54]
test eax, eax
je 0x45ebfc
add eax, eax
push eax
push dword [ebp - 0x24]
push dword [edi]
call fcn.0049cad0
add esp, 0xc
mov eax, dword [ebp - 0x40]
lea eax, [eax*2 + 2]
push eax
mov eax, dword [edi]
push esi
mov esi, dword [ebp - 0x54]
lea eax, [eax + esi*2]
push eax
call fcn.0049cad0
mov eax, dword [ebp - 0x40]
add esp, 0xc
add eax, esi
mov dword [ebp - 0x3c], 0
mov dword [edi + 4], eax
jmp case.0x45e03e.46
mov esi, dword [ebp - 0x2c]
mov eax, dword [esi + 8]
cmp eax, 5
jne 0x45ec3c
mov eax, dword [esi]
jmp 0x45ec5d
cmp eax, 4
jne 0x45ec5b
mov eax, dword [esi]
cmp byte [eax + 0x17], 0
jne 0x45ec51
mov ecx, dword [eax + 0xc]
call fcn.004051b0
test byte [eax + 0x15], 0x40
je 0x45ec5b
mov eax, dword [eax]
jmp 0x45ec5d
xor eax, eax
push 0
push 0x4e7ce4
push 0x4e7ccc
push 0
push eax
call fcn.004b5fa8
add esp, 0x14
test eax, eax
je 0x45f280
lea ecx, [ebp - 0xc]
push ecx
push 0x4d8030
mov ecx, eax
call fcn.00479120
test eax, eax
je 0x45f280
cmp dword [eax + 8], 5
jne 0x45f280
mov edx, dword [eax]
test edx, edx
je 0x45f280
mov ecx, dword [ebp - 0x1c]
call fcn.0047cdd0
movzx eax, al
cdq
mov dword [edi + 4], edx
mov dword [edi], eax
mov esi, dword [ebp - 0x44]
mov eax, edi
mov edx, dword [ebp - 0x3c]
mov ecx, 8
mov dword [ecx + eax], edx
test esi, esi
je 0x45dc51
push edi
mov ecx, esi
call fcn.00484420
test eax, eax
je 0x45f2fb
cmp byte [esi + 0x17], 0
jne 0x45ecf1
mov ecx, dword [esi + 0xc]
call fcn.004051b0
jmp 0x45ecf3
mov eax, esi
cmp byte [eax + 0x17], 1
jne 0x45dc51
mov dword [edi + 8], 4
mov dword [edi], esi
mov dword [edi + 4], 0
jmp 0x45dc51
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
mov edi, dword [ebp - 4]
add edx, 0x10
mov dword [ebp - 0x14], edx
cmp dword [edx + 8], 0x49
jne 0x45d215
cmp edi, 1
jne 0x45edad
mov esi, dword [eax]
mov eax, dword [ebp - 0x50]
mov al, byte [eax]
cmp al, 2
je 0x45ef42
mov ecx, dword [ebp - 0x6c]
test ecx, ecx
je 0x45eee8
push esi
call fcn.00484420
test eax, eax
je 0x45f2fb
jmp 0x45ef42
mov ecx, 0x4da310
mov edx, esi
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
mov eax, dword [0x4e47f8]
mov esi, dword [ebp - 0xc]
cmp dword [eax + 0x18], 0
je 0x45eda3
push 0
push 0
push 0
push 1
push dword [ebp - 0x40]
mov ecx, 0x4e9f30
push esi
call fcn.00443d20
mov dword [ebp - 0x60], 0x4da378
test eax, eax
jne 0x45edaa
mov dword [ebp - 0x60], 0x4da3ec
mov dword [ebp - 0x68], esi
mov ecx, dword [ebp - 0x68]
mov eax, 0x4ceea8
test ecx, ecx
cmovne eax, ecx
mov ecx, eax
cmp byte [0x4ea604], 0
je 0x45f2b3
push 0
push dword [ebp - 0x50]
push 9
push ecx
push dword [ebp - 0x60]
mov ecx, 0x4e9f30
call fcn.0040c830
jmp 0x45f2ee
mov eax, dword [ebx + 8]
mov dword [ebp - 0x60], 0x4da338
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
mov eax, dword [eax + ecx*4 + 8]
mov dword [ebp - 0x68], eax
jmp 0x45edad
mov ecx, 0x4ceea8
jmp 0x45edbc
mov eax, dword [ebx + 0xc]
mov dword [eax], ecx
xor ecx, ecx
mov dword [ebp - 0x30], ecx
jmp 0x45ef47
push esi
mov ecx, 0x4e9f30
call fcn.0040e8b0
jmp 0x45f2ee
mov ecx, 0x4d0c0c
mov edx, esi
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
mov eax, dword [ebp - 0x84]
test eax, eax
je 0x45ef42
push eax
call fcn.0049ef92
add esp, 4
jmp 0x45ef42
mov ecx, edx
mov dword [eax + 8], 0
mov dword [eax + 0x14], edx
mov dword [eax], edx
mov dword [eax + 4], esi
mov dword [ebp - 0x30], ecx
jmp 0x45ef47
push dword [ebp - 0x44]
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x98]
push eax
push dword [ebp - 0x3c]
call fcn.0040dc90
mov eax, dword [ebp - 0x7c]
jmp 0x45f2ee
push dword [0x4e9e10]
mov ecx, 0x4e9f30
push dword [ebp - 0x50]
push 9
push 0
push 0x4d505c
call fcn.0040c830
jmp 0x45f2ee
mov esi, eax
mov ecx, 0x4d0c0c
mov edx, esi
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
mov esi, dword [ebp - 0x2c]
mov ecx, 0x4d0c0c
mov edx, esi
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
mov ecx, dword [esi + 8]
cmp ecx, 3
je 0x45edad
cmp al, 8
je 0x45f262
cmp al, 0x10
je 0x45f262
cmp al, 0x11
je 0x45f262
mov edi, dword [ebx + 0x10]
test edi, edi
je case.0x45ef20.3
cmp ecx, 5
ja case.0x45ef20.3
jmp dword [ecx*4 + 0x45f538]
mov dword [edi + 8], ecx
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov dword [edi], eax
mov dword [edi + 4], ecx
cmp dword [esi + 8], 5
jne 0x45ef42
mov eax, dword [esi]
mov ecx, dword [eax]
push eax
call dword [ecx + 4]
mov ecx, 0x4ceea8
mov esi, dword [ebp - 0x20]
mov edx, dword [ebp - 0x28]
test esi, esi
je 0x45f32e
mov eax, dword [edx + esi*4 - 4]
dec esi
cmp dword [eax + 8], 0
mov edx, dword [eax]
push edx
jne 0x45f30a
call fcn.0049ef92
add esp, 4
jmp 0x45f30f
mov edx, dword [esi]
cmp byte [edx + 0x17], 0
jne 0x45ef86
mov ecx, dword [edx + 0xc]
call fcn.004051b0
jmp 0x45ef88
mov eax, edx
test byte [eax + 0x15], 0x70
je 0x45efa0
push edi
mov ecx, edx
call fcn.00406e60
cmp dword [edi + 8], 5
jne 0x45ef42
mov eax, dword [edi]
jmp 0x45ef3c
mov eax, dword [ebx + 0x14]
mov eax, dword [eax]
mov dword [ebp - 0x30], eax
jmp 0x45f00e
mov eax, dword [ebp - 0x20]
test eax, eax
je case.0x45ef20.3
mov edx, dword [ebp - 0x28]
cmp dword [edx + eax*4 - 4], esi
jne case.0x45ef20.3
mov ecx, dword [esi]
mov eax, dword [esi + 4]
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x30], ecx
dec esi
mov dword [edi + 8], 0
mov dword [edi + 0x14], ecx
mov dword [edi], ecx
mov dword [edi + 4], eax
jmp 0x45ef4d
mov eax, dword [ebx + 0x14]
mov edx, dword [eax]
mov eax, ecx
mov dword [ebp - 0x30], edx
mov edi, edx
sub eax, 1
je 0x45f229
sub eax, 1
je 0x45f1a2
sub eax, 3
je 0x45ee2b
mov edx, dword [esi]
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x30], edi
cmp ecx, 4
jne 0x45f02b
push 1
mov ecx, edx
call fcn.00406f6b
mov ecx, dword [esi]
mov dword [ebp - 0x5c], eax
call fcn.00406f58
mov edx, dword [ebp - 0x5c]
mov esi, eax
mov dword [ebp - 0x34], eax
jmp 0x45f034
mov esi, dword [esi + 4]
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x30], edi
mov eax, dword [ebx + 8]
lea edi, [esi + 1]
mov dword [ebp - 0x68], edi
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [ebp - 0x50]
mov eax, dword [eax + 8]
mov ecx, dword [eax + ecx*4 + 4]
mov eax, 0xff
cmp ecx, eax
cmovb ecx, eax
mov eax, dword [ebx + 0x24]
inc eax
add eax, ecx
cmp edi, eax
jbe 0x45f163
mov ecx, dword [ebx + 0x1c]
mov esi, dword [ecx]
sub esi, eax
add esi, edi
mov dword [ebp - 0x70], esi
lea eax, [esi + esi]
push eax
call fcn.0049efad
mov edi, eax
add esp, 4
test edi, edi
jne 0x45f0a6
push dword [0x4e9dfc]
mov ecx, 0x4e9f30
push 0
push 0
push 0
push 0x4d27a0
call fcn.0040c830
jmp 0x45f2ee
cmp esi, 0x400000
jbe 0x45f0b4
inc dword [0x4e9cfc]
mov eax, dword [ebx + 0x18]
mov ecx, dword [eax]
mov eax, dword [ebx + 0x14]
mov eax, dword [eax]
sub eax, ecx
sar eax, 1
je 0x45f0d4
lea esi, [eax + eax]
push esi
push ecx
push edi
call fcn.0049cad0
add esp, 0xc
jmp 0x45f0d6
xor esi, esi
mov eax, dword [ebx + 0x14]
lea ecx, [edi + esi]
mov esi, dword [ebp - 0x34]
add esi, esi
mov dword [ebp - 0x30], ecx
push esi
mov dword [eax], ecx
mov eax, dword [ebp - 0x5c]
push eax
push ecx
call fcn.0049cad0
mov eax, dword [ebx + 0x14]
xor ecx, ecx
add esp, 0xc
mov eax, dword [eax]
mov word [esi + eax], cx
mov esi, dword [ebx + 0x18]
push dword [esi]
call fcn.0049ef92
mov eax, dword [ebx + 0x1c]
add esp, 4
mov eax, dword [eax]
cmp eax, 0x400000
jbe 0x45f11e
dec dword [0x4e9cfc]
mov edx, dword [esi]
xor ecx, ecx
lea esi, [edx + eax*2]
mov dword [ebp - 0xc], esi
cmp dword [ebx + 8], ecx
jle 0x45f154
nop dword [eax]
mov eax, dword [ebx + 0x20]
mov eax, dword [eax + ecx*4]
cmp eax, edx
jb 0x45f14e
cmp eax, esi
jae 0x45f14e
mov esi, dword [ebx + 0x20]
sub eax, edx
sar eax, 1
lea eax, [edi + eax*2]
mov dword [esi + ecx*4], eax
mov esi, dword [ebp - 0xc]
inc ecx
cmp ecx, dword [ebx + 8]
jl 0x45f130
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x1c]
mov dword [eax], edi
mov eax, dword [ebp - 0x70]
mov dword [ecx], eax
jmp 0x45f17c
mov eax, dword [ebx + 0x14]
lea edi, [esi + esi]
push edi
push edx
mov esi, dword [eax]
push esi
call fcn.0049cad0
add esp, 0xc
xor eax, eax
mov word [esi + edi], ax
mov ecx, dword [ebx + 0x10]
test ecx, ecx
je 0x45f190
mov eax, dword [ebx + 0x14]
mov eax, dword [eax]
mov dword [ecx], eax
mov eax, dword [ebp - 0x34]
mov dword [ecx + 4], eax
mov ecx, dword [ebx + 0x14]
mov eax, dword [ebp - 0x68]
add eax, eax
add dword [ecx], eax
mov ecx, dword [ebp - 0x30]
jmp 0x45ef47
movsd xmm0, qword [esi]
sub esp, 8
movsd qword [esp], xmm0
push 0x4dc534
push 0x100
push edx
call fcn.00481800
add esp, 0x14
mov esi, eax
mov eax, edi
push 0x4dc540
push eax
call fcn.004aa4c4
add esp, 8
cmp eax, esi
jne 0x45f216
lea ecx, [esi + 3]
cmp ecx, 0x100
mov ecx, edi
jg 0x45f218
movzx eax, word [ecx + esi*2 - 2]
add eax, 0xffffffd0
cmp ax, 9
ja 0x45f218
mov edx, dword [ebx + 0x14]
xor eax, eax
mov dword [ecx + esi*2], 0x30002e
add esi, 2
mov dword [ebp - 0x30], ecx
mov word [ecx + esi*2], ax
lea eax, [esi*2 + 2]
add dword [edx], eax
jmp 0x45ef47
mov ecx, edi
mov edx, dword [ebx + 0x14]
lea eax, [esi*2 + 2]
add dword [edx], eax
jmp 0x45ef47
push 0xa
push edx
push dword [esi + 4]
push dword [esi]
call fcn.004a39bb
add esp, 0x10
lea edx, [eax + 2]
nop dword [eax]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x45f240
mov ecx, dword [ebx + 0x14]
sub eax, edx
sar eax, 1
lea eax, [eax*2 + 2]
add dword [ecx], eax
mov ecx, edi
jmp 0x45ef47
mov ecx, esi
call fcn.00453950
test eax, eax
mov ecx, 0x4d3dfc
mov edx, 0x4ceea8
cmove ecx, edx
mov dword [ebp - 0x30], ecx
jmp 0x45ef47
mov ecx, 0x4d6f44
mov edx, esi
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
cmp dword [ebp - 0x48], 0
mov esi, dword [ebp - 0x2c]
cmovne esi, dword [ebp - 0x1c]
mov ecx, 0x4d0c2c
mov edx, esi
call fcn.0040de40
dec eax
neg eax
sbb eax, eax
inc eax
jmp 0x45f2ee
cmp byte [0x4ea607], 0
je 0x45f2d9
mov eax, dword [ebp - 0x50]
push dword [eax + 4]
movzx eax, word [eax + 2]
push eax
push ecx
push dword [ebp - 0x60]
mov ecx, 0x4e9f30
call fcn.0040c730
xor eax, eax
jmp 0x45f2ee
push 0
push dword [ebp - 0x50]
push ecx
push 9
push dword [ebp - 0x60]
mov ecx, 0x4e9f30
call fcn.0040d460
mov ecx, dword [ebx + 0xc]
mov dword [ecx], eax
test eax, eax
jne 0x45f19a
mov eax, dword [ebx + 0xc]
xor ecx, ecx
mov dword [ebp - 0x30], ecx
mov dword [eax], ecx
jmp 0x45ef47
mov ecx, dword [edx]
call dword [ecx + 8]
mov edx, dword [ebp - 0x28]
test esi, esi
jne 0x45ef55
mov eax, dword [ebp - 0x30]
lea esp, [ebp - 0x6e8]
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x20
mov eax, ecx
lea esp, [ebp - 0x6e8]
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x20